[Bf-blender-cvs] [bbf2305] multiview: From review: sorted API/cleanups

Dalai Felinto noreply at git.blender.org
Thu Apr 2 22:56:56 CEST 2015


Commit: bbf2305155003e80f319c42eeca28f136236c8da
Author: Dalai Felinto
Date:   Thu Apr 2 17:54:54 2015 -0300
Branches: multiview
https://developer.blender.org/rBbbf2305155003e80f319c42eeca28f136236c8da

>From review: sorted API/cleanups

===================================================================

M	source/blender/editors/include/ED_screen.h
M	source/blender/editors/screen/screen_edit.c
M	source/blender/windowmanager/intern/wm_operators.c
M	source/blender/windowmanager/intern/wm_stereo.c
M	source/blender/windowmanager/intern/wm_subwindow.c
M	source/blender/windowmanager/wm.h

===================================================================

diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index b4f7d80..90b0b35 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 e1c414b..3d76070 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 5ff2936..398017c 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 d991541..7dd9519 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 f2df988..4ce2415 100644
--- a/source/blender/windowmanager/intern/wm_subwindow.c
+++ b/source/blender/windowmanager/intern/wm_subwindow.c
@@ -40,7 +40

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list