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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2010-02-01 13:02:53 +0300
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2010-02-01 13:02:53 +0300
commita59841b016f76dea59fb86aa18980447199a1451 (patch)
treee58d57599efbe1b00f5e2ac5d5d99ac34d792763 /source/blender/windowmanager/intern/wm_draw.c
parent3e8a2a5f070608428d539b039c3be68e6d9f4540 (diff)
WM Draw Method added to do Overlap assuming swap exchange / flipping,
and made that the default for windows software opengl because that seems to be working better at least on XP. Previously this could only be specified from the command line.
Diffstat (limited to 'source/blender/windowmanager/intern/wm_draw.c')
-rw-r--r--source/blender/windowmanager/intern/wm_draw.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c
index 0bbd3757f27..9372e49597d 100644
--- a/source/blender/windowmanager/intern/wm_draw.c
+++ b/source/blender/windowmanager/intern/wm_draw.c
@@ -180,14 +180,13 @@ static void wm_flush_regions_up(bScreen *screen, rcti *dirty)
}
}
-static void wm_method_draw_overlap_all(bContext *C, wmWindow *win)
+static void wm_method_draw_overlap_all(bContext *C, wmWindow *win, int exchange)
{
wmWindowManager *wm= CTX_wm_manager(C);
bScreen *screen= win->screen;
ScrArea *sa;
ARegion *ar;
static rcti rect= {0, 0, 0, 0};
- int exchange= (G.f & G_SWAP_EXCHANGE);
/* flush overlapping regions */
if(screen->regionbase.first) {
@@ -400,7 +399,7 @@ static void wm_draw_triple_fail(bContext *C, wmWindow *win)
wm_draw_window_clear(win);
win->drawfail= 1;
- wm_method_draw_overlap_all(C, win);
+ wm_method_draw_overlap_all(C, win, 0);
}
static int wm_triple_gen_textures(wmWindow *win, wmDrawTriple *triple)
@@ -688,22 +687,23 @@ void wm_draw_update(bContext *C)
ED_screen_refresh(wm, win);
if(win->drawfail)
- wm_method_draw_overlap_all(C, win);
+ wm_method_draw_overlap_all(C, win, 0);
else if(win->drawmethod == USER_DRAW_AUTOMATIC) {
/* ATI opensource driver is known to be very slow at this,
Windows software driver darkens color on each redraw */
- if(GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_UNIX, GPU_DRIVER_OPENSOURCE) ||
- GPU_type_matches(GPU_DEVICE_SOFTWARE, GPU_OS_WIN, GPU_DRIVER_SOFTWARE))
- wm_method_draw_overlap_all(C, win);
+ if(GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_UNIX, GPU_DRIVER_OPENSOURCE))
+ wm_method_draw_overlap_all(C, win, 0);
+ else if(GPU_type_matches(GPU_DEVICE_SOFTWARE, GPU_OS_WIN, GPU_DRIVER_SOFTWARE))
+ wm_method_draw_overlap_all(C, win, 1);
else
wm_method_draw_triple(C, win);
}
else if(win->drawmethod == USER_DRAW_FULL)
wm_method_draw_full(C, win);
else if(win->drawmethod == USER_DRAW_OVERLAP)
- wm_method_draw_overlap_all(C, win);
- /*else if(win->drawmethod == USER_DRAW_DAMAGE)
- wm_method_draw_damage(C, win);*/
+ wm_method_draw_overlap_all(C, win, 0);
+ else if(win->drawmethod == USER_DRAW_OVERLAP_FLIP)
+ wm_method_draw_overlap_all(C, win, 1);
else // if(win->drawmethod == USER_DRAW_TRIPLE)
wm_method_draw_triple(C, win);