xwayland: Avoid gratuitous round trip through event_id
By adding a new xwl_present_event_from_vblank function we can avoid turning the vblank into an event_id, and also abstract away the exact encoding for event_id from most places. Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
This commit is contained in:
parent
814a04927d
commit
85a3614668
|
@ -89,6 +89,12 @@ xwl_present_event_from_id(uint64_t event_id)
|
||||||
return (struct xwl_present_event*)(uintptr_t)event_id;
|
return (struct xwl_present_event*)(uintptr_t)event_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct xwl_present_event *
|
||||||
|
xwl_present_event_from_vblank(present_vblank_ptr vblank)
|
||||||
|
{
|
||||||
|
return container_of(vblank, struct xwl_present_event, vblank);
|
||||||
|
}
|
||||||
|
|
||||||
static Bool entered_for_each_frame_callback;
|
static Bool entered_for_each_frame_callback;
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
|
@ -268,7 +274,7 @@ static void
|
||||||
xwl_present_free_idle_vblank(present_vblank_ptr vblank)
|
xwl_present_free_idle_vblank(present_vblank_ptr vblank)
|
||||||
{
|
{
|
||||||
present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
|
present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
|
||||||
xwl_present_free_event(xwl_present_event_from_id((uintptr_t)vblank));
|
xwl_present_free_event(xwl_present_event_from_vblank(vblank));
|
||||||
}
|
}
|
||||||
|
|
||||||
static WindowPtr
|
static WindowPtr
|
||||||
|
@ -306,7 +312,7 @@ xwl_present_flips_stop(WindowPtr window)
|
||||||
struct xwl_present_event *event;
|
struct xwl_present_event *event;
|
||||||
|
|
||||||
vblank = xwl_present_window->flip_active;
|
vblank = xwl_present_window->flip_active;
|
||||||
event = xwl_present_event_from_id((uintptr_t)vblank);
|
event = xwl_present_event_from_vblank(vblank);
|
||||||
if (event->pixmap)
|
if (event->pixmap)
|
||||||
xwl_present_free_idle_vblank(vblank);
|
xwl_present_free_idle_vblank(vblank);
|
||||||
else
|
else
|
||||||
|
@ -336,7 +342,7 @@ xwl_present_flip_notify_vblank(present_vblank_ptr vblank, uint64_t ust, uint64_t
|
||||||
|
|
||||||
if (xwl_present_window->flip_active) {
|
if (xwl_present_window->flip_active) {
|
||||||
struct xwl_present_event *event =
|
struct xwl_present_event *event =
|
||||||
xwl_present_event_from_id((uintptr_t)xwl_present_window->flip_active);
|
xwl_present_event_from_vblank(xwl_present_window->flip_active);
|
||||||
|
|
||||||
if (!event->pixmap)
|
if (!event->pixmap)
|
||||||
xwl_present_free_event(event);
|
xwl_present_free_event(event);
|
||||||
|
|
Loading…
Reference in New Issue