[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31941] trunk/blender/source: Apply patch [#23809] Blender.exe -W support

Nathan Letwory nathan at letworyinteractive.com
Wed Sep 15 13:48:59 CEST 2010


Revision: 31941
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31941
Author:   jesterking
Date:     2010-09-15 13:48:59 +0200 (Wed, 15 Sep 2010)

Log Message:
-----------
Apply patch [#23809] Blender.exe -W support
by Dalai Felinto/Nathan Letwory

This basically implements -W support for Blender.

Modified Paths:
--------------
    trunk/blender/source/blender/windowmanager/WM_api.h
    trunk/blender/source/blender/windowmanager/intern/wm.c
    trunk/blender/source/blender/windowmanager/intern/wm_window.c
    trunk/blender/source/blender/windowmanager/wm_window.h
    trunk/blender/source/creator/creator.c

Modified: trunk/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_api.h	2010-09-15 08:38:29 UTC (rev 31940)
+++ trunk/blender/source/blender/windowmanager/WM_api.h	2010-09-15 11:48:59 UTC (rev 31941)
@@ -52,6 +52,8 @@
 
 /* general API */
 void		WM_setprefsize		(int stax, int stay, int sizx, int sizy);
+void		WM_setinitialstate_fullscreen();
+void		WM_setinitialstate_normal();
 
 void		WM_init				(struct bContext *C, int argc, char **argv);
 void		WM_exit				(struct bContext *C);

Modified: trunk/blender/source/blender/windowmanager/intern/wm.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm.c	2010-09-15 08:38:29 UTC (rev 31940)
+++ trunk/blender/source/blender/windowmanager/intern/wm.c	2010-09-15 11:48:59 UTC (rev 31941)
@@ -231,7 +231,7 @@
 		}
 
 		/* case: no open windows at all, for old file reads */
-		wm_window_add_ghostwindows(wm);
+		wm_window_add_ghostwindows(C, wm);
 
 		/* case: fileread */
 		if((wm->initialized & WM_INIT_WINDOW) == 0) {

Modified: trunk/blender/source/blender/windowmanager/intern/wm_window.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_window.c	2010-09-15 08:38:29 UTC (rev 31940)
+++ trunk/blender/source/blender/windowmanager/intern/wm_window.c	2010-09-15 11:48:59 UTC (rev 31941)
@@ -67,7 +67,7 @@
 GHOST_SystemHandle g_system= NULL;
 
 /* set by commandline */
-static int prefsizx= 0, prefsizy= 0, prefstax= 0, prefstay= 0;
+static int prefsizx= 0, prefsizy= 0, prefstax= 0, prefstay= 0, initialstate= GHOST_kWindowStateNormal;
 
 /* ******** win open & close ************ */
 
@@ -289,19 +289,21 @@
 }
 
 /* belongs to below */
-static void wm_window_add_ghostwindow(wmWindowManager *wm, char *title, wmWindow *win)
+static void wm_window_add_ghostwindow(bContext *C, wmWindowManager *wm, char *title, wmWindow *win)
 {
 	GHOST_WindowHandle ghostwin;
-	GHOST_TWindowState inital_state;
 	int scr_w, scr_h, posy;
+	GHOST_TWindowState initial_state;
+
+	/* when there is no window open uses the initial state */
+	if(!CTX_wm_window(C))
+		initial_state= initialstate;
+	else
+		initial_state= GHOST_kWindowStateNormal;
 	
 	wm_get_screensize(&scr_w, &scr_h);
 	posy= (scr_h - win->posy - win->sizey);
 	
-	//		inital_state = GHOST_kWindowStateFullScreen;
-	//		inital_state = GHOST_kWindowStateMaximized;
-	inital_state = GHOST_kWindowStateNormal;
-	
 #if defined(__APPLE__) && !defined(GHOST_COCOA)
 	{
 		extern int macPrefState; /* creator.c */
@@ -312,13 +314,16 @@
 	 doesn't work well when AA is initialized, even if not used. */
 	ghostwin= GHOST_CreateWindow(g_system, title, 
 								 win->posx, posy, win->sizex, win->sizey, 
-								 inital_state, 
+								 initial_state, 
 								 GHOST_kDrawingContextTypeOpenGL,
 								 0 /* no stereo */,
 								 0 /* no AA */);
 	
 	if (ghostwin) {
 		
+		/* set the state*/
+		GHOST_SetWindowState(ghostwin, initial_state);
+
 		win->ghostwin= ghostwin;
 		GHOST_SetWindowUserData(ghostwin, win);	/* pointer back */
 		
@@ -342,7 +347,7 @@
 /* for wmWindows without ghostwin, open these and clear */
 /* window size is read from window, if 0 it uses prefsize */
 /* called in WM_check, also inits stuff after file read */
-void wm_window_add_ghostwindows(wmWindowManager *wm)
+void wm_window_add_ghostwindows(bContext* C, wmWindowManager *wm)
 {
 	wmKeyMap *keymap;
 	wmWindow *win;
@@ -372,9 +377,9 @@
 				win->posy= prefstay;
 				win->sizex= prefsizx;
 				win->sizey= prefsizy;
-				win->windowstate= 0;
+				win->windowstate= initialstate;
 			}
-			wm_window_add_ghostwindow(wm, "Blender", win);
+			wm_window_add_ghostwindow(C, wm, "Blender", win);
 		}
 		/* happens after fileread */
 		if(win->eventstate==NULL)
@@ -1106,6 +1111,17 @@
 	prefsizy= sizy;
 }
 
+/* for borderless and border windows set from command-line */
+void WM_setinitialstate_fullscreen()
+{
+	initialstate= GHOST_kWindowStateFullScreen;
+}
+
+void WM_setinitialstate_normal()
+{
+	initialstate= GHOST_kWindowStateNormal;
+}
+
 /* This function requires access to the GHOST_SystemHandle (g_system) */
 void WM_cursor_warp(wmWindow *win, int x, int y)
 {

Modified: trunk/blender/source/blender/windowmanager/wm_window.h
===================================================================
--- trunk/blender/source/blender/windowmanager/wm_window.h	2010-09-15 08:38:29 UTC (rev 31940)
+++ trunk/blender/source/blender/windowmanager/wm_window.h	2010-09-15 11:48:59 UTC (rev 31941)
@@ -43,7 +43,7 @@
 void		wm_window_close			(bContext *C, wmWindowManager *wm, wmWindow *win);
 
 void		wm_window_title				(wmWindowManager *wm, wmWindow *win);
-void		wm_window_add_ghostwindows	(wmWindowManager *wm);
+void		wm_window_add_ghostwindows	(bContext *C, wmWindowManager *wm);
 void		wm_window_process_events	(const bContext *C);
 void		wm_window_process_events_nosleep(const bContext *C);
 

Modified: trunk/blender/source/creator/creator.c
===================================================================
--- trunk/blender/source/creator/creator.c	2010-09-15 08:38:29 UTC (rev 31940)
+++ trunk/blender/source/creator/creator.c	2010-09-15 11:48:59 UTC (rev 31941)
@@ -412,16 +412,13 @@
 
 static int with_borders(int argc, char **argv, void *data)
 {
-	/* with borders XXX OLD CRUFT!*/
-
+	WM_setinitialstate_normal();
 	return 0;
 }
 
 static int without_borders(int argc, char **argv, void *data)
 {
-	/* borderless, win + linux XXX OLD CRUFT */
-	/* XXX, fixme mein, borderless on OSX */
-
+	WM_setinitialstate_fullscreen();
 	return 0;
 }
 





More information about the Bf-blender-cvs mailing list