diff options
Diffstat (limited to 'src/loader')
-rw-r--r-- | src/loader/loader_dri3_helper.c | 12 | ||||
-rw-r--r-- | src/loader/loader_dri3_helper.h | 2 |
2 files changed, 4 insertions, 10 deletions
diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c index cb947c58728..426966a786a 100644 --- a/src/loader/loader_dri3_helper.c +++ b/src/loader/loader_dri3_helper.c @@ -196,7 +196,7 @@ dri3_fence_await(xcb_connection_t *c, struct loader_dri3_drawable *draw, static void dri3_update_num_back(struct loader_dri3_drawable *draw) { - if (draw->flipping) + if (draw->last_present_mode == XCB_PRESENT_COMPLETE_MODE_FLIP) draw->num_back = 3; else draw->num_back = 2; @@ -369,14 +369,8 @@ dri3_handle_present_event(struct loader_dri3_drawable *draw, draw->recv_sbc = (draw->send_sbc & 0xffffffff00000000LL) | ce->serial; if (draw->recv_sbc > draw->send_sbc) draw->recv_sbc -= 0x100000000; - switch (ce->mode) { - case XCB_PRESENT_COMPLETE_MODE_FLIP: - draw->flipping = true; - break; - case XCB_PRESENT_COMPLETE_MODE_COPY: - draw->flipping = false; - break; - } + + draw->last_present_mode = ce->mode; if (draw->vtable->show_fps) draw->vtable->show_fps(draw, ce->ust); diff --git a/src/loader/loader_dri3_helper.h b/src/loader/loader_dri3_helper.h index 839cba30df0..5caf214b372 100644 --- a/src/loader/loader_dri3_helper.h +++ b/src/loader/loader_dri3_helper.h @@ -116,7 +116,6 @@ struct loader_dri3_drawable { uint8_t have_back; uint8_t have_fake_front; uint8_t is_pixmap; - uint8_t flipping; /* Information about the GPU owning the buffer */ __DRIscreen *dri_screen; @@ -157,6 +156,7 @@ struct loader_dri3_drawable { unsigned int swap_method; unsigned int back_format; + xcb_present_complete_mode_t last_present_mode; /* Currently protects the following fields: * event_cnd, has_event_waiter, |