xwayland/eglstream: Consolidate pending_cb destruction
Into a new xwl_eglstream_destroy_pending_stream helper. Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
This commit is contained in:
parent
204f10c29e
commit
ba8763c27b
|
@ -293,9 +293,11 @@ xwl_eglstream_destroy_pixmap_stream(struct xwl_pixmap *xwl_pixmap)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xwl_glamor_eglstream_remove_pending_stream(struct xwl_pixmap *xwl_pixmap)
|
xwl_eglstream_destroy_pending_cb(PixmapPtr pixmap)
|
||||||
{
|
{
|
||||||
if (xwl_pixmap->pending_cb) {
|
struct xwl_pixmap *xwl_pixmap = xwl_pixmap_get(pixmap);
|
||||||
|
|
||||||
|
if (xwl_pixmap && xwl_pixmap->pending_cb) {
|
||||||
wl_callback_destroy(xwl_pixmap->pending_cb);
|
wl_callback_destroy(xwl_pixmap->pending_cb);
|
||||||
xwl_pixmap->pending_cb = NULL;
|
xwl_pixmap->pending_cb = NULL;
|
||||||
}
|
}
|
||||||
|
@ -307,7 +309,7 @@ xwl_glamor_eglstream_destroy_pixmap(PixmapPtr pixmap)
|
||||||
struct xwl_pixmap *xwl_pixmap = xwl_pixmap_get(pixmap);
|
struct xwl_pixmap *xwl_pixmap = xwl_pixmap_get(pixmap);
|
||||||
|
|
||||||
if (xwl_pixmap && pixmap->refcnt == 1) {
|
if (xwl_pixmap && pixmap->refcnt == 1) {
|
||||||
xwl_glamor_eglstream_remove_pending_stream(xwl_pixmap);
|
xwl_eglstream_destroy_pending_cb(pixmap);
|
||||||
xwl_eglstream_destroy_pixmap_stream(xwl_pixmap);
|
xwl_eglstream_destroy_pixmap_stream(xwl_pixmap);
|
||||||
xwl_pixmap_del_buffer_release_cb(pixmap);
|
xwl_pixmap_del_buffer_release_cb(pixmap);
|
||||||
}
|
}
|
||||||
|
@ -325,16 +327,6 @@ xwl_glamor_eglstream_get_wl_buffer_for_pixmap(PixmapPtr pixmap)
|
||||||
return xwl_pixmap->buffer;
|
return xwl_pixmap->buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
xwl_eglstream_cancel_pending_stream(PixmapPtr pixmap)
|
|
||||||
{
|
|
||||||
struct xwl_pixmap *xwl_pixmap;
|
|
||||||
|
|
||||||
xwl_pixmap = xwl_pixmap_get(pixmap);
|
|
||||||
if (xwl_pixmap)
|
|
||||||
xwl_glamor_eglstream_remove_pending_stream(xwl_pixmap);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xwl_eglstream_set_window_pixmap(WindowPtr window, PixmapPtr pixmap)
|
xwl_eglstream_set_window_pixmap(WindowPtr window, PixmapPtr pixmap)
|
||||||
{
|
{
|
||||||
|
@ -352,7 +344,7 @@ xwl_eglstream_set_window_pixmap(WindowPtr window, PixmapPtr pixmap)
|
||||||
*/
|
*/
|
||||||
old_pixmap = (*screen->GetWindowPixmap) (window);
|
old_pixmap = (*screen->GetWindowPixmap) (window);
|
||||||
if (old_pixmap && old_pixmap != pixmap)
|
if (old_pixmap && old_pixmap != pixmap)
|
||||||
xwl_eglstream_cancel_pending_stream(old_pixmap);
|
xwl_eglstream_destroy_pending_cb(old_pixmap);
|
||||||
|
|
||||||
xwl_screen->screen->SetWindowPixmap = xwl_eglstream->SetWindowPixmap;
|
xwl_screen->screen->SetWindowPixmap = xwl_eglstream->SetWindowPixmap;
|
||||||
(*xwl_screen->screen->SetWindowPixmap)(window, pixmap);
|
(*xwl_screen->screen->SetWindowPixmap)(window, pixmap);
|
||||||
|
@ -449,8 +441,7 @@ xwl_eglstream_consumer_ready_callback(void *data,
|
||||||
struct xwl_eglstream_private *xwl_eglstream =
|
struct xwl_eglstream_private *xwl_eglstream =
|
||||||
xwl_eglstream_get(xwl_screen);
|
xwl_eglstream_get(xwl_screen);
|
||||||
|
|
||||||
wl_callback_destroy(callback);
|
xwl_eglstream_destroy_pending_cb(pixmap);
|
||||||
xwl_pixmap->pending_cb = NULL;
|
|
||||||
|
|
||||||
xwl_glamor_egl_make_current(xwl_screen);
|
xwl_glamor_egl_make_current(xwl_screen);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue