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:
authorJulian Eisel <julian@blender.org>2020-03-06 18:22:28 +0300
committerJulian Eisel <julian@blender.org>2020-03-06 18:27:13 +0300
commitd5572eacc5958db38ac4a4a32eddb3a2cd24bf68 (patch)
tree5252d8f509dae02bf9c137a1710c073d5bbac592 /source/blender/windowmanager/intern/wm_window.c
parentb242cc67928a6858a835c088e4d3ea8822c83168 (diff)
Cleanup: Reduce context usage in UI functions
Part of https://developer.blender.org/T74429. There's a chance that this causes some issues becaue in some cases we change from getting the window from context to getting it from somewhere else.
Diffstat (limited to 'source/blender/windowmanager/intern/wm_window.c')
-rw-r--r--source/blender/windowmanager/intern/wm_window.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 148195df372..57612964295 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -283,10 +283,8 @@ static int find_free_winid(wmWindowManager *wm)
}
/* don't change context itself */
-wmWindow *wm_window_new(bContext *C, wmWindow *parent)
+wmWindow *wm_window_new(const Main *bmain, wmWindowManager *wm, wmWindow *parent)
{
- Main *bmain = CTX_data_main(C);
- wmWindowManager *wm = CTX_wm_manager(C);
wmWindow *win = MEM_callocN(sizeof(wmWindow), "window");
BLI_addtail(&wm->windows, win);
@@ -300,14 +298,14 @@ wmWindow *wm_window_new(bContext *C, wmWindow *parent)
}
/* part of wm_window.c api */
-wmWindow *wm_window_copy(bContext *C,
+wmWindow *wm_window_copy(Main *bmain,
+ wmWindowManager *wm,
wmWindow *win_src,
const bool duplicate_layout,
const bool child)
{
- Main *bmain = CTX_data_main(C);
wmWindow *win_parent = (child) ? win_src : win_src->parent;
- wmWindow *win_dst = wm_window_new(C, win_parent);
+ wmWindow *win_dst = wm_window_new(bmain, wm, win_parent);
WorkSpace *workspace = WM_window_get_active_workspace(win_src);
WorkSpaceLayout *layout_old = WM_window_get_active_layout(win_src);
WorkSpaceLayout *layout_new;
@@ -339,15 +337,16 @@ wmWindow *wm_window_copy_test(bContext *C,
const bool duplicate_layout,
const bool child)
{
+ Main *bmain = CTX_data_main(C);
wmWindowManager *wm = CTX_wm_manager(C);
wmWindow *win_dst;
- win_dst = wm_window_copy(C, win_src, duplicate_layout, child);
+ win_dst = wm_window_copy(bmain, wm, win_src, duplicate_layout, child);
WM_check(C);
if (win_dst->ghostwin) {
- WM_event_add_notifier(C, NC_WINDOW | NA_ADDED, NULL);
+ WM_event_add_notifier_ex(wm, CTX_wm_window(C), NC_WINDOW | NA_ADDED, NULL);
return win_dst;
}
else {
@@ -394,7 +393,7 @@ void wm_quit_with_optional_confirmation_prompt(bContext *C, wmWindow *win)
CTX_wm_window_set(C, win);
if (U.uiflag & USER_SAVE_PROMPT) {
- if (wm_file_or_image_is_modified(C) && !G.background) {
+ if (wm_file_or_image_is_modified(CTX_data_main(C), CTX_wm_manager(C)) && !G.background) {
wm_window_raise(win);
wm_confirm_quit(C);
}
@@ -809,8 +808,9 @@ void wm_window_ghostwindows_remove_invalid(bContext *C, wmWindowManager *wm)
*/
wmWindow *WM_window_open(bContext *C, const rcti *rect)
{
+ wmWindowManager *wm = CTX_wm_manager(C);
wmWindow *win_prev = CTX_wm_window(C);
- wmWindow *win = wm_window_new(C, win_prev);
+ wmWindow *win = wm_window_new(CTX_data_main(C), wm, win_prev);
win->posx = rect->xmin;
win->posy = rect->ymin;
@@ -823,7 +823,7 @@ wmWindow *WM_window_open(bContext *C, const rcti *rect)
return win;
}
else {
- wm_window_close(C, CTX_wm_manager(C), win);
+ wm_window_close(C, wm, win);
CTX_wm_window_set(C, win_prev);
return NULL;
}
@@ -881,7 +881,7 @@ wmWindow *WM_window_open_temp(bContext *C,
/* add new window? */
if (win == NULL) {
- win = wm_window_new(C, win_prev);
+ win = wm_window_new(bmain, wm, win_prev);
win->posx = rect.xmin;
win->posy = rect.ymin;
@@ -1573,6 +1573,7 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr C_void_ptr
*/
static int wm_window_timer(const bContext *C)
{
+ Main *bmain = CTX_data_main(C);
wmWindowManager *wm = CTX_wm_manager(C);
wmTimer *wt, *wtnext;
wmWindow *win;
@@ -1591,10 +1592,10 @@ static int wm_window_timer(const bContext *C)
wt->ntime = wt->stime + wt->timestep * ceil(wt->duration / wt->timestep);
if (wt->event_type == TIMERJOBS) {
- wm_jobs_timer(C, wm, wt);
+ wm_jobs_timer(wm, wt);
}
else if (wt->event_type == TIMERAUTOSAVE) {
- wm_autosave_timer(C, wm, wt);
+ wm_autosave_timer(bmain, wm, wt);
}
else if (wt->event_type == TIMERNOTIFIER) {
WM_main_add_notifier(POINTER_AS_UINT(wt->customdata), NULL);