Commit: 885260117d6a9080ce073a1fb402b7af060f8645 Author: Bastien Montagne Date: Tue Mar 28 10:41:10 2017 +0200 Branches: blender2.8 https://developer.blender.org/rB885260117d6a9080ce073a1fb402b7af060f8645
Merge branch 'master' into blender2.8 Conflicts: source/blender/blenloader/intern/readfile.c source/blender/windowmanager/intern/wm_window.c =================================================================== =================================================================== diff --cc source/blender/blenloader/intern/readfile.c index efa3e09329f,18c4034c0dd..81d72dce3a4 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@@ -5670,33 -5660,8 +5670,25 @@@ static bool scene_validate_setscene__li } #endif +static void lib_link_scene_collection(FileData *fd, Library *lib, SceneCollection *sc) +{ + for (LinkData *link = sc->objects.first; link; link = link->next) { + link->data = newlibadr_us(fd, lib, link->data); + BLI_assert(link->data); + } + + for (LinkData *link = sc->filter_objects.first; link; link = link->next) { + link->data = newlibadr_us(fd, lib, link->data); + BLI_assert(link->data); + } + + for (SceneCollection *nsc = sc->scene_collections.first; nsc; nsc = nsc->next) { + lib_link_scene_collection(fd, lib, nsc); + } +} + static void lib_link_scene(FileData *fd, Main *main) { - Scene *sce; - BaseLegacy *base_legacy, *base_legacy_next; - Sequence *seq; - SceneLayer *sl; - SceneRenderLayer *srl; - FreestyleModuleConfig *fmc; - FreestyleLineSet *fls; - #ifdef USE_SETSCENE_CHECK bool need_check_set = false; int totscene = 0; @@@ -5742,17 -5707,17 +5734,17 @@@ sce->toolsettings->particle.shape_object = newlibadr(fd, sce->id.lib, sce->toolsettings->particle.shape_object); - for (base_legacy = sce->base.first; base_legacy; base_legacy = base_legacy_next) { - for (Base *next, *base = sce->base.first; base; base = next) { - next = base->next; ++ for (BaseLegacy *base_legacy_next, *base_legacy = sce->base.first; base_legacy; base_legacy = base_legacy_next) { + base_legacy_next = base_legacy->next; - base->object = newlibadr_us(fd, sce->id.lib, base->object); + base_legacy->object = newlibadr_us(fd, sce->id.lib, base_legacy->object); - if (base->object == NULL) { + if (base_legacy->object == NULL) { blo_reportf_wrap(fd->reports, RPT_WARNING, TIP_("LIB: object lost from scene: '%s'"), sce->id.name + 2); - BLI_remlink(&sce->base, base); - if (base == sce->basact) sce->basact = NULL; - MEM_freeN(base); + BLI_remlink(&sce->base, base_legacy); + if (base_legacy == sce->basact) sce->basact = NULL; + MEM_freeN(base_legacy); } } @@@ -5838,18 -5804,6 +5831,18 @@@ /* Motion Tracking */ sce->clip = newlibadr_us(fd, sce->id.lib, sce->clip); + lib_link_scene_collection(fd, sce->id.lib, sce->collection); + - for (sl = sce->render_layers.first; sl; sl = sl->next) { ++ for (SceneLayer *sl = sce->render_layers.first; sl; sl = sl->next) { + /* tag scene layer to update for collection tree evaluation */ + sl->flag |= SCENE_LAYER_ENGINE_DIRTY; + for (Base *base = sl->object_bases.first; base; base = base->next) { + /* we only bump the use count for the collection objects */ + base->object = newlibadr(fd, sce->id.lib, base->object); + base->flag |= BASE_DIRTY_ENGINE_SETTINGS; + } + } + #ifdef USE_SETSCENE_CHECK if (sce->set != NULL) { /* link flag for scenes with set would be reset later, @@@ -7591,7 -7501,9 +7608,9 @@@ static void lib_link_group(FileData *fd if (add_us) { id_us_ensure_real(&group->id); } - BKE_group_object_unlink(group, NULL, NULL, NULL); /* removes NULL entries */ + BKE_group_object_unlink(group, NULL); /* removes NULL entries */ + + group->id.tag &= ~LIB_TAG_NEED_LINK; } } } @@@ -8535,8 -8435,8 +8543,9 @@@ static void do_versions_after_linking(M { // printf("%s for %s (%s), %d.%d\n", __func__, main->curlib ? main->curlib->name : main->name, // main->curlib ? "LIB" : "MAIN", main->versionfile, main->subversionfile); + do_versions_after_linking_270(main); + do_versions_after_linking_280(main); } static void lib_link_all(FileData *fd, Main *main) diff --cc source/blender/windowmanager/intern/wm_window.c index b6f1b431009,40baab8809c..49fe3a1d015 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@@ -79,10 -76,9 +79,11 @@@ #include "GPU_draw.h" #include "GPU_extensions.h" #include "GPU_init_exit.h" -#include "GPU_glew.h" +#include "GPU_immediate.h" + #include "BLF_api.h" +#include "UI_resources.h" + /* for assert */ #ifndef NDEBUG # include "BLI_threads.h" @@@ -918,14 -854,10 +940,13 @@@ void wm_window_make_drawable(wmWindowMa if (G.debug & G_DEBUG_EVENTS) { printf("%s: set drawable %d\n", __func__, win->winid); } + + immDeactivate(); GHOST_ActivateWindowDrawingContext(win->ghostwin); - + immActivate(); + /* this can change per window */ - U.pixelsize = wm_window_pixelsize(win); - BKE_blender_userdef_refresh(); + wm_window_set_dpi(win); } } @@@ -1289,12 -1234,9 +1324,11 @@@ static int ghost_event_proc(GHOST_Event { // only update if the actual pixel size changes float prev_pixelsize = U.pixelsize; - U.pixelsize = wm_window_pixelsize(win); + wm_window_set_dpi(win); if (U.pixelsize != prev_pixelsize) { - BKE_blender_userdef_refresh(); + BKE_icon_changed(win->screen->id.icon_id); + // close all popups since they are positioned with the pixel // size baked in and it's difficult to correct them wmWindow *oldWindow = CTX_wm_window(C); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs