diff options
-rw-r--r-- | intern/cycles/blender/addon/__init__.py | 6 | ||||
-rw-r--r-- | intern/cycles/blender/addon/version_update.py | 35 | ||||
-rw-r--r-- | source/blender/blenlib/BLI_callbacks.h | 1 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_app_handlers.c | 1 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_files.c | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_init_exit.c | 1 |
6 files changed, 45 insertions, 1 deletions
diff --git a/intern/cycles/blender/addon/__init__.py b/intern/cycles/blender/addon/__init__.py index 27d986900c8..d1d27df8dc3 100644 --- a/intern/cycles/blender/addon/__init__.py +++ b/intern/cycles/blender/addon/__init__.py @@ -31,7 +31,7 @@ bl_info = { import bpy from . import engine - +from . import version_update class CyclesRender(bpy.types.RenderEngine): bl_idname = 'CYCLES' @@ -100,12 +100,16 @@ def register(): presets.register() bpy.utils.register_module(__name__) + bpy.app.handlers.version_update.append(version_update.do_versions) + def unregister(): from . import ui from . import properties from . import presets + bpy.app.handlers.version_update.remove(version_update.do_versions) + ui.unregister() properties.unregister() presets.unregister() diff --git a/intern/cycles/blender/addon/version_update.py b/intern/cycles/blender/addon/version_update.py new file mode 100644 index 00000000000..b0b4e1d24dd --- /dev/null +++ b/intern/cycles/blender/addon/version_update.py @@ -0,0 +1,35 @@ +# +# Copyright 2011-2014 Blender Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License +# + +# <pep8 compliant> + +import bpy + +from bpy.app.handlers import persistent + + +@persistent +def do_versions(self): + # We don't modify startup file because it assumes to + # have all the default values only. + if not bpy.data.is_saved: + return + + if bpy.data.version <= (2, 71, 0): + for scene in bpy.data.scenes: + cscene = scene.cycles + if not cscene.is_property_set("volume_bounces"): + cscene.volume_bounces = 1 diff --git a/source/blender/blenlib/BLI_callbacks.h b/source/blender/blenlib/BLI_callbacks.h index 8d5ea91c422..b93cd9e9eeb 100644 --- a/source/blender/blenlib/BLI_callbacks.h +++ b/source/blender/blenlib/BLI_callbacks.h @@ -45,6 +45,7 @@ typedef enum { BLI_CB_EVT_SCENE_UPDATE_POST, BLI_CB_EVT_GAME_PRE, BLI_CB_EVT_GAME_POST, + BLI_CB_EVT_VERSION_UPDATE, BLI_CB_EVT_TOT } eCbEvent; diff --git a/source/blender/python/intern/bpy_app_handlers.c b/source/blender/python/intern/bpy_app_handlers.c index 0c13230c365..c1d0a0bc298 100644 --- a/source/blender/python/intern/bpy_app_handlers.c +++ b/source/blender/python/intern/bpy_app_handlers.c @@ -59,6 +59,7 @@ static PyStructSequence_Field app_cb_info_fields[] = { {(char *)"scene_update_post", (char *)"Callback list - on updating the scenes data (after)"}, {(char *)"game_pre", (char *)"Callback list - on starting the game engine"}, {(char *)"game_post", (char *)"Callback list - on ending the game engine"}, + {(char *)"version_update", (char *)"Callback list - on ending the versioning code"}, /* sets the permanent tag */ # define APP_CB_OTHER_FIELDS 1 diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 3c28d2b93cd..832fef404e3 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -459,6 +459,7 @@ bool WM_file_read(bContext *C, const char *filepath, ReportList *reports) #endif /* important to do before NULL'ing the context */ + BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_VERSION_UPDATE); BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_LOAD_POST); if (!G.background) { @@ -650,6 +651,7 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c #endif /* important to do before NULL'ing the context */ + BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_VERSION_UPDATE); BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_LOAD_POST); WM_event_add_notifier(C, NC_WM | ND_FILEREAD, NULL); diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index da0ef2b0c2a..b1f693502f6 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -238,6 +238,7 @@ void WM_init(bContext *C, int argc, const char **argv) * * unlikely any handlers are set but its possible, * note that recovering the last session does its own callbacks. */ + BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_VERSION_UPDATE); BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_LOAD_POST); } } |