diff --git a/src/newgal/shadow/Makefile.am b/src/newgal/shadow/Makefile.am index 0f4e26fb..24f5054b 100644 --- a/src/newgal/shadow/Makefile.am +++ b/src/newgal/shadow/Makefile.am @@ -1,6 +1,8 @@ AM_CPPFLAGS = -I$(abs_top_srcdir)/src/include -I$(abs_top_srcdir)/include \ -I$(abs_top_srcdir)/src/newgal/ $(PIXMAN_CFLAGS) +AM_CFLAGS = -O3 + SRC_FILES = shadow.c shadow_refresh_msb_right.c shadow_refresh_msb_left.c HDR_FILES = shadow.h diff --git a/src/newgal/shadow/shadow.c b/src/newgal/shadow/shadow.c index 4d677b08..a61a2240 100644 --- a/src/newgal/shadow/shadow.c +++ b/src/newgal/shadow/shadow.c @@ -635,6 +635,14 @@ static void *task_do_update(void *data) if (pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL)) goto error; + GAL_VideoDevice *real_device; + real_device = this->hidden->realfb_info->real_device; + + BOOL vbl_ok = FALSE; + if (real_device->WaitVBlank) { + vbl_ok = real_device->WaitVBlank(real_device); + } + this->hidden->async_update = 1; sem_post(&this->hidden->sync_sem); @@ -643,10 +651,7 @@ static void *task_do_update(void *data) #endif do { - GAL_VideoDevice *real_device; - real_device = this->hidden->realfb_info->real_device; - - if (real_device->WaitVBlank) { + if (vbl_ok) { real_device->WaitVBlank(real_device); } else {