xwayland: Remove xwl_present_event::buffer_released in favor of ::pixmap
No need for the separate boolean. Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
This commit is contained in:
parent
9141196d31
commit
9eb0b4f731
|
@ -117,19 +117,24 @@ xwl_present_reset_timer(struct xwl_present_window *xwl_present_window)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
xwl_present_release_pixmap(struct xwl_present_event *event)
|
||||||
|
{
|
||||||
|
if (!event->pixmap)
|
||||||
|
return;
|
||||||
|
|
||||||
|
xwl_pixmap_del_buffer_release_cb(event->pixmap);
|
||||||
|
dixDestroyPixmap(event->pixmap, event->pixmap->drawable.id);
|
||||||
|
event->pixmap = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xwl_present_free_event(struct xwl_present_event *event)
|
xwl_present_free_event(struct xwl_present_event *event)
|
||||||
{
|
{
|
||||||
if (!event)
|
if (!event)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (event->pixmap) {
|
xwl_present_release_pixmap(event);
|
||||||
if (!event->buffer_released)
|
|
||||||
xwl_pixmap_del_buffer_release_cb(event->pixmap);
|
|
||||||
|
|
||||||
dixDestroyPixmap(event->pixmap, event->pixmap->drawable.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
xorg_list_del(&event->list);
|
xorg_list_del(&event->list);
|
||||||
free(event);
|
free(event);
|
||||||
}
|
}
|
||||||
|
@ -178,8 +183,7 @@ xwl_present_buffer_release(PixmapPtr pixmap, void *data)
|
||||||
if (!event)
|
if (!event)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
xwl_pixmap_del_buffer_release_cb(pixmap);
|
xwl_present_release_pixmap(event);
|
||||||
event->buffer_released = TRUE;
|
|
||||||
|
|
||||||
if (event->abort) {
|
if (event->abort) {
|
||||||
if (!event->pending)
|
if (!event->pending)
|
||||||
|
@ -212,7 +216,7 @@ xwl_present_msc_bump(struct xwl_present_window *xwl_present_window)
|
||||||
present_wnmd_event_notify(xwl_present_window->window, event->event_id,
|
present_wnmd_event_notify(xwl_present_window->window, event->event_id,
|
||||||
xwl_present_window->ust, msc);
|
xwl_present_window->ust, msc);
|
||||||
|
|
||||||
if (event->buffer_released) {
|
if (!event->pixmap) {
|
||||||
/* If the buffer was already released, clean up now */
|
/* If the buffer was already released, clean up now */
|
||||||
present_wnmd_event_notify(xwl_present_window->window, event->event_id,
|
present_wnmd_event_notify(xwl_present_window->window, event->event_id,
|
||||||
xwl_present_window->ust, msc);
|
xwl_present_window->ust, msc);
|
||||||
|
@ -281,7 +285,7 @@ xwl_present_sync_callback(void *data,
|
||||||
|
|
||||||
if (event->abort) {
|
if (event->abort) {
|
||||||
/* Event might have been aborted */
|
/* Event might have been aborted */
|
||||||
if (event->buffer_released)
|
if (!event->pixmap)
|
||||||
/* Buffer was already released, cleanup now */
|
/* Buffer was already released, cleanup now */
|
||||||
xwl_present_free_event(event);
|
xwl_present_free_event(event);
|
||||||
return;
|
return;
|
||||||
|
@ -292,7 +296,7 @@ xwl_present_sync_callback(void *data,
|
||||||
xwl_present_window->ust,
|
xwl_present_window->ust,
|
||||||
xwl_present_window->msc);
|
xwl_present_window->msc);
|
||||||
|
|
||||||
if (event->buffer_released) {
|
if (!event->pixmap) {
|
||||||
/* If the buffer was already released, send the event now again */
|
/* If the buffer was already released, send the event now again */
|
||||||
present_wnmd_event_notify(xwl_present_window->window,
|
present_wnmd_event_notify(xwl_present_window->window,
|
||||||
event->event_id,
|
event->event_id,
|
||||||
|
@ -468,7 +472,6 @@ xwl_present_flip(WindowPtr present_window,
|
||||||
event->target_msc = target_msc;
|
event->target_msc = target_msc;
|
||||||
event->pending = TRUE;
|
event->pending = TRUE;
|
||||||
event->abort = FALSE;
|
event->abort = FALSE;
|
||||||
event->buffer_released = FALSE;
|
|
||||||
|
|
||||||
if (sync_flip) {
|
if (sync_flip) {
|
||||||
xorg_list_init(&event->list);
|
xorg_list_init(&event->list);
|
||||||
|
|
|
@ -56,7 +56,6 @@ struct xwl_present_event {
|
||||||
|
|
||||||
Bool abort;
|
Bool abort;
|
||||||
Bool pending;
|
Bool pending;
|
||||||
Bool buffer_released;
|
|
||||||
|
|
||||||
struct xwl_present_window *xwl_present_window;
|
struct xwl_present_window *xwl_present_window;
|
||||||
PixmapPtr pixmap;
|
PixmapPtr pixmap;
|
||||||
|
|
Loading…
Reference in New Issue