BOOL APIENTRY DrvSwapBuffers(HDC hdc) { struct stw_context *ctx; struct stw_framebuffer *fb; if (!stw_dev) return FALSE; fb = stw_framebuffer_from_hdc( hdc ); if (fb == NULL) return FALSE; if (!(fb->pfi->pfd.dwFlags & PFD_DOUBLEBUFFER)) { stw_framebuffer_unlock(fb); return TRUE; } ctx = stw_current_context(); if (ctx) { if (ctx->hud) { /* Display the HUD */ struct pipe_resource *back = stw_get_framebuffer_resource(fb->stfb, ST_ATTACHMENT_BACK_LEFT); if (back) { hud_draw(ctx->hud, back); } } if (ctx->current_framebuffer == fb) { /* flush current context */ ctx->st->flush(ctx->st, ST_FLUSH_END_OF_FRAME, NULL); } } if (stw_dev->swap_interval != 0) { wait_swap_interval(fb); } return stw_st_swap_framebuffer_locked(hdc, fb->stfb); }
BOOL APIENTRY DrvSwapBuffers( HDC hdc ) { struct stw_framebuffer *fb; if (!stw_dev) return FALSE; fb = stw_framebuffer_from_hdc( hdc ); if (fb == NULL) return FALSE; if (!(fb->pfi->pfd.dwFlags & PFD_DOUBLEBUFFER)) { stw_framebuffer_release(fb); return TRUE; } stw_flush_current_locked(fb); return stw_st_swap_framebuffer_locked(hdc, fb->stfb); }