[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18453] branches/blender2.5/blender/source : 2.5

Ton Roosendaal ton at blender.org
Sun Jan 11 19:35:16 CET 2009


Revision: 18453
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18453
Author:   ton
Date:     2009-01-11 19:35:16 +0100 (Sun, 11 Jan 2009)

Log Message:
-----------
2.5

Testing commit; this puts back support for swap-exchange graphics
cards, which I had hoped to have faded out... but it appears it
still does it for intel and some atis.

This only swap-exchanges properly for areas/regions, not for
menus or the 'action zone triange'. Let's see if it works!

You enable it with starting with commandline option -E

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c
    branches/blender2.5/blender/source/blender/editors/screen/area.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_screen_types.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c
    branches/blender2.5/blender/source/creator/creator.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h	2009-01-11 18:27:41 UTC (rev 18452)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h	2009-01-11 18:35:16 UTC (rev 18453)
@@ -124,7 +124,7 @@
 
 /* G.f */
 #define G_RENDER_OGL	(1 <<  0)
-#define G_PLAYANIM		(1 <<  1)
+#define G_SWAP_EXCHANGE	(1 <<  1)
 /* also uses G_FILE_AUTOPLAY */
 #define G_RENDER_SHADOW	(1 <<  3)
 #define G_BACKBUFSEL	(1 <<  4)

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c	2009-01-11 18:27:41 UTC (rev 18452)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c	2009-01-11 18:35:16 UTC (rev 18453)
@@ -360,6 +360,8 @@
 	/* special cases, override loaded flags: */
 	if (G.f & G_DEBUG) bfd->globalf |= G_DEBUG;
 	else bfd->globalf &= ~G_DEBUG;
+	if (G.f & G_SWAP_EXCHANGE) bfd->globalf |= G_SWAP_EXCHANGE;
+	else bfd->globalf &= ~G_SWAP_EXCHANGE;
 
 	if ((U.flag & USER_DONT_DOSCRIPTLINKS)) bfd->globalf &= ~G_DOSCRIPTLINKS;
 

Modified: branches/blender2.5/blender/source/blender/editors/screen/area.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/area.c	2009-01-11 18:27:41 UTC (rev 18452)
+++ branches/blender2.5/blender/source/blender/editors/screen/area.c	2009-01-11 18:35:16 UTC (rev 18453)
@@ -233,6 +233,7 @@
 	ED_region_pixelspace(ar);
 	
 	ar->do_draw= 0;
+	ar->swap= WIN_BACK_OK;
 }
 
 /* **********************************

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c	2009-01-11 18:27:41 UTC (rev 18452)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c	2009-01-11 18:35:16 UTC (rev 18453)
@@ -990,6 +990,7 @@
 	
 	if(G.f & G_DEBUG) printf("draw screen\n");
 	win->screen->do_draw= 0;
+	win->screen->swap= WIN_BACK_OK;
 }
 
 /* make this screen usable */

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c	2009-01-11 18:27:41 UTC (rev 18452)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c	2009-01-11 18:35:16 UTC (rev 18453)
@@ -2048,7 +2048,6 @@
 //	if (v3d->flag2 & V3D_DISPGP)
 //		draw_gpencil_3dview(ar, 0);
 
-	if(!(G.f & G_PLAYANIM)) drawcursor(scene, ar, v3d);
 	if(U.uiflag & USER_SHOW_ROTVIEWICON)
 		draw_view_axis(v3d);
 	else	

Modified: branches/blender2.5/blender/source/blender/makesdna/DNA_screen_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesdna/DNA_screen_types.h	2009-01-11 18:27:41 UTC (rev 18452)
+++ branches/blender2.5/blender/source/blender/makesdna/DNA_screen_types.h	2009-01-11 18:35:16 UTC (rev 18453)
@@ -55,7 +55,8 @@
 	short do_draw;						/* notifier for drawing edges */
 	short do_refresh;					/* notifier for scale screen, changed screen, etc */
 	short do_gesture;					/* notifier for gesture draw. */
-	short pad[3];
+	short swap;							/* indicator to survive swap-exchange systems */
+	short pad[2];
 	
 	short mainwin;						/* screensize subwindow, for screenedges and global menus */
 	short subwinactive;					/* active subwindow */
@@ -136,7 +137,7 @@
 	float fsize;				/* current split size in float */
 	
 	short do_draw;				/* private, cached notifier events */
-	short pad;
+	short swap;					/* private, indicator to survive swap-exchange */
 	int pad1;
 	
 	struct ARegionType *type;	/* callbacks for this region type */
@@ -149,6 +150,11 @@
 	void *regiondata;			/* XXX 2.50, need spacedata equivalent? */
 } ARegion;
 
+/* swap */
+#define WIN_BACK_OK		1
+#define WIN_FRONT_OK	2
+#define WIN_EQUAL		3
+
 /* area->flag */
 #define HEADER_NO_PULLDOWN	1
 #define AREA_FLAG_DRAWJOINTO 2
@@ -168,11 +174,6 @@
 #define SCREENFULL      1
 #define SCREENAUTOPLAY  2
 
-/* sa->win_swap */
-#define WIN_FRONT_OK	1
-#define WIN_BACK_OK		2
-#define WIN_EQUAL		3
-
 /* Panel->snap - for snapping to screen edges */
 #define PNL_SNAP_NONE		0
 #define PNL_SNAP_TOP		1

Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-01-11 18:27:41 UTC (rev 18452)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-01-11 18:35:16 UTC (rev 18453)
@@ -199,6 +199,68 @@
 	CTX_wm_window_set(C, NULL);
 }
 
+/* ********************* drawing, swap ****************** */
+
+static void wm_paintcursor_draw(bContext *C)
+{
+	wmWindowManager *wm= CTX_wm_manager(C);
+	
+	if(wm->paintcursors.first) {
+		wmWindow *win= CTX_wm_window(C);
+		wmPaintCursor *pc;
+		
+		for(pc= wm->paintcursors.first; pc; pc= pc->next) {
+			if(pc->poll(C)) {
+				ARegion *ar= CTX_wm_region(C);
+				pc->draw(C, win->eventstate->x - ar->winrct.xmin, win->eventstate->y - ar->winrct.ymin);
+			}
+		}
+	}
+}
+
+static void wm_window_swap_exchange(bContext *C, wmWindow *win)
+{
+	ARegion *ar;
+	ScrArea *sa;
+	
+	if(win->screen->swap==WIN_FRONT_OK) {
+		ED_screen_draw(win);
+		win->screen->swap= WIN_EQUAL;
+	}
+	else if(win->screen->swap==WIN_BACK_OK) {
+		win->screen->swap= WIN_FRONT_OK;
+	}
+	
+	for(sa= win->screen->areabase.first; sa; sa= sa->next) {
+		
+		CTX_wm_area_set(C, sa);
+		
+		for(ar=sa->regionbase.first; ar; ar= ar->next) {
+			if(ar->swinid) {
+				if(ar->swap == WIN_BACK_OK) {
+					ar->swap = WIN_FRONT_OK;
+				}
+				else if(ar->swap == WIN_FRONT_OK) {
+					CTX_wm_region_set(C, ar);
+					
+					ED_region_do_draw(C, ar);
+					if(win->screen->subwinactive==ar->swinid)
+						wm_paintcursor_draw(C);
+					
+					ar->swap = WIN_EQUAL;
+					
+					CTX_wm_region_set(C, NULL);
+					printf("draws swap exchange %d\n", ar->swinid);
+				}
+			}
+		}
+		
+		CTX_wm_area_set(C, NULL);
+	}
+	
+	wm_window_swap_buffers(win);
+}
+
 /* mark area-regions to redraw if overlapped with rect */
 static void wm_flush_regions_down(bScreen *screen, rcti *dirty)
 {
@@ -277,23 +339,6 @@
 	return 0;
 }
 
-static void wm_paintcursor_draw(bContext *C)
-{
-	wmWindowManager *wm= CTX_wm_manager(C);
-	
-	if(wm->paintcursors.first) {
-		wmWindow *win= CTX_wm_window(C);
-		wmPaintCursor *pc;
-		
-		for(pc= wm->paintcursors.first; pc; pc= pc->next) {
-			if(pc->poll(C)) {
-				ARegion *ar= CTX_wm_region(C);
-				pc->draw(C, win->eventstate->x - ar->winrct.xmin, win->eventstate->y - ar->winrct.ymin);
-			}
-		}
-	}
-}
-
 void wm_draw_update(bContext *C)
 {
 	wmWindowManager *wm= CTX_wm_manager(C);
@@ -355,7 +400,10 @@
 			if(win->screen->do_gesture)
 				wm_gesture_draw(win);
 
-			wm_window_swap_buffers(win);
+			if(G.f & G_SWAP_EXCHANGE)
+				wm_window_swap_exchange(C, win);
+			else 
+				wm_window_swap_buffers(win);
 
 			CTX_wm_window_set(C, NULL);
 		}

Modified: branches/blender2.5/blender/source/creator/creator.c
===================================================================
--- branches/blender2.5/blender/source/creator/creator.c	2009-01-11 18:27:41 UTC (rev 18452)
+++ branches/blender2.5/blender/source/creator/creator.c	2009-01-11 18:35:16 UTC (rev 18453)
@@ -439,7 +439,9 @@
 						printf("argv[%d] = %s\n", i, argv[i]);
 					}
 					break;
-            
+				case 'E':
+					G.f |= G_SWAP_EXCHANGE;
+					break;
 				case 'w':
 					/* with borders XXX OLD CRUFT!*/
 					break;





More information about the Bf-blender-cvs mailing list