[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