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:
authorDalai Felinto <dfelinto@gmail.com>2015-04-02 23:54:54 +0300
committerDalai Felinto <dfelinto@gmail.com>2015-04-02 23:54:54 +0300
commitbbf2305155003e80f319c42eeca28f136236c8da (patch)
tree6ace6826bae4f8884d4ee4a19b3f08551bbfd636
parent7fc167f10f35468a9a889b99ad5123a7d8945105 (diff)
From review: sorted API/cleanups
-rw-r--r--source/blender/editors/include/ED_screen.h1
-rw-r--r--source/blender/editors/screen/screen_edit.c82
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c5
-rw-r--r--source/blender/windowmanager/intern/wm_stereo.c117
-rw-r--r--source/blender/windowmanager/intern/wm_subwindow.c1
-rw-r--r--source/blender/windowmanager/wm.h1
6 files changed, 98 insertions, 109 deletions
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index b4f7d806079..90b0b3510bc 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -112,6 +112,7 @@ void ED_screen_full_prevspace(struct bContext *C, ScrArea *sa);
void ED_screen_full_restore(struct bContext *C, ScrArea *sa);
struct ScrArea *ED_screen_state_toggle(struct bContext *C, struct wmWindow *win, struct ScrArea *sa, const short state);
void ED_screens_header_tools_menu_create(struct bContext *C, struct uiLayout *layout, void *arg);
+bool ED_screen_stereo3d_required(struct bScreen *screen);
/* anim */
void ED_update_for_newframe(struct Main *bmain, struct Scene *scene, int mute);
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index e1c414b0031..3d76070f197 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -59,6 +59,7 @@
#include "ED_screen.h"
#include "ED_screen_types.h"
#include "ED_clip.h"
+#include "ED_node.h"
#include "ED_render.h"
#include "UI_interface.h"
@@ -2122,4 +2123,85 @@ void ED_update_for_newframe(Main *bmain, Scene *scene, int UNUSED(mute))
}
+/*
+ * return true if any active area requires to see in 3D
+ */
+bool ED_screen_stereo3d_required(bScreen *screen)
+{
+ ScrArea *sa;
+ Scene *sce = screen->scene;
+ const bool is_multiview = (sce->r.scemode & R_MULTIVIEW) != 0;
+
+ for (sa = screen->areabase.first; sa; sa = sa->next) {
+ switch (sa->spacetype) {
+ case SPACE_VIEW3D:
+ {
+ View3D *v3d;
+
+ if (!is_multiview)
+ continue;
+
+ v3d = sa->spacedata.first;
+ if (v3d->camera && v3d->stereo3d_camera == STEREO_3D_ID) {
+ ARegion *ar;
+ for (ar = sa->regionbase.first; ar; ar = ar->next) {
+ if (ar->regiondata && ar->regiontype == RGN_TYPE_WINDOW) {
+ RegionView3D *rv3d = ar->regiondata;
+ if (rv3d->persp == RV3D_CAMOB) {
+ return true;
+ }
+ }
+ }
+ }
+ break;
+ }
+ case SPACE_IMAGE:
+ {
+ SpaceImage *sima;
+
+ /* images should always show in stereo, even if
+ * the file doesn't have views enabled */
+ sima = sa->spacedata.first;
+ if (sima->image && (sima->image->flag & IMA_IS_STEREO) &&
+ (sima->iuser.flag & IMA_SHOW_STEREO))
+ {
+ return true;
+ }
+ break;
+ }
+ case SPACE_NODE:
+ {
+ SpaceNode *snode;
+
+ if (!is_multiview)
+ continue;
+ snode = sa->spacedata.first;
+ if ((snode->flag & SNODE_BACKDRAW) && ED_node_is_compositor(snode)) {
+ return true;
+ }
+ break;
+ }
+ case SPACE_SEQ:
+ {
+ SpaceSeq *sseq;
+
+ if (!is_multiview)
+ continue;
+
+ sseq = sa->spacedata.first;
+ if (ELEM(sseq->view, SEQ_VIEW_PREVIEW, SEQ_VIEW_SEQUENCE_PREVIEW)) {
+ return true;
+ }
+
+ if (sseq->draw_flag & SEQ_DRAW_BACKDROP) {
+ return true;
+ }
+
+ break;
+ }
+ }
+ }
+
+ return false;
+}
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 5ff2936a4c7..398017c2aa6 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -4838,7 +4838,7 @@ static void operatortype_ghash_free_cb(wmOperatorType *ot)
/* ******************************************************* */
/* toggle 3D for current window, turning it fullscreen if needed */
-static void WM_OT_set_stereo3d(wmOperatorType *ot)
+static void WM_OT_stereo3d_set(wmOperatorType *ot)
{
PropertyRNA *prop;
@@ -4850,7 +4850,6 @@ static void WM_OT_set_stereo3d(wmOperatorType *ot)
ot->invoke = wm_set_stereo3d_invoke;
ot->poll = WM_operator_winactive;
ot->ui = wm_set_stereo3d_draw;
- ot->check = wm_set_stereo3d_check;
ot->cancel = wm_set_stereo3d_cancel;
prop = RNA_def_enum(ot->srna, "display_mode", stereo3d_display_items, S3D_DISPLAY_ANAGLYPH, "Display Mode", "");
@@ -4909,7 +4908,7 @@ void wm_operatortype_init(void)
WM_operatortype_append(WM_OT_call_menu);
WM_operatortype_append(WM_OT_call_menu_pie);
WM_operatortype_append(WM_OT_radial_control);
- WM_operatortype_append(WM_OT_set_stereo3d);
+ WM_operatortype_append(WM_OT_stereo3d_set);
#if defined(WIN32)
WM_operatortype_append(WM_OT_console_toggle);
#endif
diff --git a/source/blender/windowmanager/intern/wm_stereo.c b/source/blender/windowmanager/intern/wm_stereo.c
index d991541805f..7dd951986a6 100644
--- a/source/blender/windowmanager/intern/wm_stereo.c
+++ b/source/blender/windowmanager/intern/wm_stereo.c
@@ -4,7 +4,7 @@
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -51,7 +51,6 @@
#include "GHOST_C-api.h"
-#include "ED_node.h"
#include "ED_screen.h"
#include "GPU_glew.h"
@@ -87,7 +86,7 @@ static GLuint right_interlace_mask[32];
static enum eStereo3dInterlaceType interlace_prev_type = -1;
static char interlace_prev_swap = -1;
-static void wm_interlace_create_masks(wmWindow *win)
+static void wm_interlace_masks_create(wmWindow *win)
{
GLuint pattern;
char i;
@@ -141,7 +140,7 @@ static void wm_method_draw_stereo_interlace(wmWindow *win)
wmDrawData *drawdata;
int view;
- wm_interlace_create_masks(win);
+ wm_interlace_masks_create(win);
for (view = 0; view < 2; view ++) {
drawdata = BLI_findlink(&win->drawdata, (view * 2) + 1);
@@ -351,7 +350,7 @@ void wm_method_draw_stereo(const bContext *UNUSED(C), wmWindow *win)
}
}
-static bool wm_stereo_need_fullscreen(eStereoDisplayMode stereo_display)
+static bool wm_stereo_is_fullscreen_required(eStereoDisplayMode stereo_display)
{
return ELEM(stereo_display,
S3D_DISPLAY_SIDEBYSIDE,
@@ -359,98 +358,15 @@ static bool wm_stereo_need_fullscreen(eStereoDisplayMode stereo_display)
S3D_DISPLAY_PAGEFLIP);
}
-/*
- * return true if any active area requires to see in 3D
- */
-static bool wm_stereo3d_required(bScreen *screen)
-{
- ScrArea *sa;
- Scene *sce = screen->scene;
- const bool is_multiview = (sce->r.scemode & R_MULTIVIEW) != 0;
-
- for (sa = screen->areabase.first; sa; sa = sa->next) {
- switch (sa->spacetype) {
- case SPACE_VIEW3D:
- {
- View3D *v3d;
-
- if (!is_multiview)
- continue;
-
- v3d = sa->spacedata.first;
- if (v3d->camera && v3d->stereo3d_camera == STEREO_3D_ID) {
- ARegion *ar;
- for (ar = sa->regionbase.first; ar; ar = ar->next) {
- if (ar->regiondata && ar->regiontype == RGN_TYPE_WINDOW) {
- RegionView3D *rv3d = ar->regiondata;
- if (rv3d->persp == RV3D_CAMOB) {
- return true;
- }
- }
- }
- }
- break;
- }
- case SPACE_IMAGE:
- {
- SpaceImage *sima;
-
- /* images should always show in stereo, even if
- * the file doesn't have views enabled */
- sima = sa->spacedata.first;
- if (sima->image && (sima->image->flag & IMA_IS_STEREO) &&
- (sima->iuser.flag & IMA_SHOW_STEREO))
- {
- return true;
- }
- break;
- }
- case SPACE_NODE:
- {
- SpaceNode *snode;
-
- if (!is_multiview)
- continue;
-
- snode = sa->spacedata.first;
- if ((snode->flag & SNODE_BACKDRAW) && ED_node_is_compositor(snode)) {
- return true;
- }
- break;
- }
- case SPACE_SEQ:
- {
- SpaceSeq *sseq;
-
- if (!is_multiview)
- continue;
-
- sseq = sa->spacedata.first;
- if (ELEM(sseq->view, SEQ_VIEW_PREVIEW, SEQ_VIEW_SEQUENCE_PREVIEW)) {
- return true;
- }
-
- if (sseq->draw_flag & SEQ_DRAW_BACKDROP) {
- return true;
- }
-
- break;
- }
- }
- }
-
- return false;
-}
-
-bool WM_stereo_enabled(wmWindow *win, bool only_fullscreen_test)
+bool WM_stereo_enabled(wmWindow *win, bool skip_stereo_check)
{
bScreen *screen = win->screen;
- if ((only_fullscreen_test == false) && (wm_stereo3d_required(screen) == false))
+ if ((skip_stereo_check == false) && (ED_screen_stereo3d_required(screen) == false))
return false;
- if (wm_stereo_need_fullscreen(win->stereo3d_format->display_mode))
- return (GHOST_GetWindowState(win->ghostwin) == GHOST_kWindowStateFullScreen);
+ if (wm_stereo_is_fullscreen_required(win->stereo3d_format->display_mode))
+ return WM_window_is_fullscreen(win);
return true;
}
@@ -521,14 +437,11 @@ int wm_set_stereo3d_exec(bContext *C, wmOperator *op)
{
wmWindowManager *wm = CTX_wm_manager(C);
wmWindow *win = CTX_wm_window(C);
- GHOST_TWindowState state;
+ const bool is_fullscreen = WM_window_is_fullscreen(win);
if (G.background)
return OPERATOR_CANCELLED;
- /* FullScreen or Normal */
- state = GHOST_GetWindowState(win->ghostwin);
-
/* pagelfip requires a new window to be created with the proper OS flags */
if (win->stereo3d_format->display_mode == S3D_DISPLAY_PAGEFLIP) {
if (wm_window_duplicate_exec(C, op) == OPERATOR_FINISHED) {
@@ -542,9 +455,10 @@ int wm_set_stereo3d_exec(bContext *C, wmOperator *op)
}
}
- if (wm_stereo_need_fullscreen(win->stereo3d_format->display_mode)) {
- if (state != GHOST_kWindowStateFullScreen)
- GHOST_SetWindowState(win->ghostwin, GHOST_kWindowStateFullScreen);
+ if (wm_stereo_is_fullscreen_required(win->stereo3d_format->display_mode)) {
+ if (!is_fullscreen) {
+ wm_window_fullscreen_toggle_exec(C, op);
+ }
}
if (op->customdata) {
@@ -605,11 +519,6 @@ void wm_set_stereo3d_draw(bContext *C, wmOperator *op)
}
}
-bool wm_set_stereo3d_check(bContext *UNUSED(C), wmOperator *UNUSED(op))
-{
- return true;
-}
-
void wm_set_stereo3d_cancel(bContext *C, wmOperator *op)
{
Stereo3dData *s3dd = op->customdata;
diff --git a/source/blender/windowmanager/intern/wm_subwindow.c b/source/blender/windowmanager/intern/wm_subwindow.c
index f2df98866fb..4ce2415e310 100644
--- a/source/blender/windowmanager/intern/wm_subwindow.c
+++ b/source/blender/windowmanager/intern/wm_subwindow.c
@@ -40,7 +40,6 @@
#include "DNA_windowmanager_types.h"
#include "DNA_screen_types.h"
-#include "DNA_scene_types.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
diff --git a/source/blender/windowmanager/wm.h b/source/blender/windowmanager/wm.h
index 9125ca8718c..305965498a1 100644
--- a/source/blender/windowmanager/wm.h
+++ b/source/blender/windowmanager/wm.h
@@ -81,7 +81,6 @@ void wm_method_draw_stereo(const bContext *C, wmWindow *win);
int wm_set_stereo3d_exec(bContext *C, wmOperator *op);
int wm_set_stereo3d_invoke(bContext *C, wmOperator *op, const wmEvent *event);
void wm_set_stereo3d_draw(bContext *C, wmOperator *op);
-bool wm_set_stereo3d_check(bContext *C, wmOperator *op);
void wm_set_stereo3d_cancel(bContext *C, wmOperator *op);
/* init operator properties */