Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/editors/render/render_internal.c10
-rw-r--r--source/blender/editors/render/render_update.c21
-rw-r--r--source/blender/windowmanager/WM_api.h1
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c6
-rw-r--r--source/blender/windowmanager/intern/wm_jobs.c4
5 files changed, 24 insertions, 18 deletions
diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c
index 954fff42a37..541512a7cbb 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -47,6 +47,7 @@
#include "BKE_blender.h"
#include "BKE_context.h"
+#include "BKE_depsgraph.h"
#include "BKE_freestyle.h"
#include "BKE_global.h"
#include "BKE_image.h"
@@ -926,7 +927,6 @@ static void render_view3d_do(RenderEngine *engine, const bContext *C, int keep_d
if (CTX_wm_window(C) == NULL) {
engine->flag |= RE_ENGINE_DO_UPDATE;
-
return;
}
@@ -962,7 +962,7 @@ static void render_view3d_do(RenderEngine *engine, const bContext *C, int keep_d
/* callback for render engine , on changes */
void render_view3d(RenderEngine *engine, const bContext *C)
-{
+{
render_view3d_do(engine, C, 0);
}
@@ -986,8 +986,12 @@ static int render_view3d_changed(RenderEngine *engine, const bContext *C)
float clipsta, clipend;
bool orth;
- if (engine->update_flag == RE_ENGINE_UPDATE_MA)
+ if (engine->update_flag & RE_ENGINE_UPDATE_MA)
update |= PR_UPDATE_MATERIAL;
+
+ if (engine->update_flag & RE_ENGINE_UPDATE_OTHER)
+ update |= PR_UPDATE_MATERIAL;
+
engine->update_flag = 0;
if (engine->resolution_x != ar->winx || engine->resolution_y != ar->winy)
diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c
index 5653d14e590..6a4d99d2535 100644
--- a/source/blender/editors/render/render_update.c
+++ b/source/blender/editors/render/render_update.c
@@ -41,6 +41,7 @@
#include "DNA_space_types.h"
#include "DNA_view3d_types.h"
#include "DNA_world_types.h"
+#include "DNA_windowmanager_types.h"
#include "BLI_threads.h"
#include "BLI_utildefines.h"
@@ -78,11 +79,14 @@ void ED_render_scene_update(Main *bmain, Scene *scene, int updated)
/* viewport rendering update on data changes, happens after depsgraph
* updates if there was any change. context is set to the 3d view */
bContext *C;
- bScreen *sc;
- ScrArea *sa;
- ARegion *ar;
+ wmWindowManager *wm;
+ wmWindow *win;
static int recursive_check = FALSE;
+ /* why do this function then? :) */
+ if (updated == 0)
+ return;
+
/* don't do this render engine update if we're updating the scene from
* other threads doing e.g. rendering or baking jobs */
if (!BLI_thread_is_main())
@@ -99,8 +103,15 @@ void ED_render_scene_update(Main *bmain, Scene *scene, int updated)
CTX_data_scene_set(C, scene);
CTX_wm_manager_set(C, bmain->wm.first);
-
- for (sc = bmain->screen.first; sc; sc = sc->id.next) {
+ wm = bmain->wm.first;
+
+ for (win = wm->windows.first; win; win = win->next) {
+ bScreen *sc = win->screen;
+ ScrArea *sa;
+ ARegion *ar;
+
+ CTX_wm_window_set(C, win);
+
for (sa = sc->areabase.first; sa; sa = sa->next) {
if (sa->spacetype != SPACE_VIEW3D)
continue;
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 9830dcb9e9f..4e485ebfd63 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -170,7 +170,6 @@ struct wmEventHandler *WM_event_add_dropbox_handler(ListBase *handlers, ListBase
/* mouse */
void WM_event_add_mousemove(struct bContext *C);
-void WM_event_add_mousemove_window(struct wmWindow *window);
int WM_modal_tweak_exit(const struct wmEvent *event, int tweak_event);
/* notifiers */
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 03a1785541e..3a29685d059 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -2255,7 +2255,7 @@ void wm_event_do_handlers(bContext *C)
/* only add mousemove when queue was read entirely */
if (win->addmousemove && win->eventstate) {
wmEvent tevent = *(win->eventstate);
- //printf("adding MOUSEMOVE %d %d\n", tevent.x, tevent.y);
+ // printf("adding MOUSEMOVE %d %d\n", tevent.x, tevent.y);
tevent.type = MOUSEMOVE;
tevent.prevx = tevent.x;
tevent.prevy = tevent.y;
@@ -2540,10 +2540,6 @@ void WM_event_add_mousemove(bContext *C)
window->addmousemove = 1;
}
-void WM_event_add_mousemove_window(wmWindow *window)
-{
- window->addmousemove = 1;
-}
/* for modal callbacks, check configuration for how to interpret exit with tweaks */
int WM_modal_tweak_exit(const wmEvent *event, int tweak_event)
diff --git a/source/blender/windowmanager/intern/wm_jobs.c b/source/blender/windowmanager/intern/wm_jobs.c
index c637b77738e..03af5e9e8a6 100644
--- a/source/blender/windowmanager/intern/wm_jobs.c
+++ b/source/blender/windowmanager/intern/wm_jobs.c
@@ -529,10 +529,6 @@ void wm_jobs_timer(const bContext *C, wmWindowManager *wm, wmTimer *wt)
WM_event_add_notifier(C, NC_WM | ND_JOB, NULL);
- /* so the info header updates on job end even if the mouse doesn't move.
- * a rather annoying/obscure bug, see [#32537] (second reply) */
- WM_event_add_mousemove_window(wm_job->win);
-
/* new job added for wm_job? */
if (wm_job->customdata) {
// printf("job restarted with new data %s\n", wm_job->name);