mirror of
https://github.com/brl/mutter.git
synced 2024-11-23 00:20:42 -05:00
d791710197
When a xdg-toplevel is reset, the window and actor are recreated, and all state is cleared. When this happened, we earlied out from the xdg-toplevel commit handler, which would mean that if the client had queued frame callbacks when resetting, they'd be left in the pending commit state, later hitting an assert as they were not handled. Fix this by queuing the frame callbacks no the new actor, so that they are emitted whenever the actor is eventually painted. https://gitlab.gnome.org/GNOME/mutter/issues/240
50 lines
1.9 KiB
C
50 lines
1.9 KiB
C
/*
|
|
* Copyright (C) 2012,2013 Intel Corporation
|
|
* Copyright (C) 2013-2017 Red Hat, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
* 02111-1307, USA.
|
|
*/
|
|
|
|
#ifndef META_WAYLAND_ACTOR_SURFACE_H
|
|
#define META_WAYLAND_ACTOR_SURFACE_H
|
|
|
|
#include "wayland/meta-wayland-surface.h"
|
|
|
|
#define META_TYPE_WAYLAND_ACTOR_SURFACE (meta_wayland_actor_surface_get_type ())
|
|
G_DECLARE_DERIVABLE_TYPE (MetaWaylandActorSurface,
|
|
meta_wayland_actor_surface,
|
|
META, WAYLAND_ACTOR_SURFACE,
|
|
MetaWaylandSurfaceRole)
|
|
|
|
struct _MetaWaylandActorSurfaceClass
|
|
{
|
|
MetaWaylandSurfaceRoleClass parent_class;
|
|
|
|
void (* sync_actor_state) (MetaWaylandActorSurface *actor_surface);
|
|
};
|
|
|
|
void meta_wayland_actor_surface_sync_actor_state (MetaWaylandActorSurface *actor_surface);
|
|
|
|
double meta_wayland_actor_surface_calculate_scale (MetaWaylandActorSurface *actor_surface);
|
|
|
|
MetaSurfaceActor * meta_wayland_actor_surface_get_actor (MetaWaylandActorSurface *actor_surface);
|
|
void meta_wayland_actor_surface_reset_actor (MetaWaylandActorSurface *actor_surface);
|
|
|
|
void meta_wayland_actor_surface_queue_frame_callbacks (MetaWaylandActorSurface *actor_surface,
|
|
MetaWaylandPendingState *pending);
|
|
|
|
#endif /* META_WAYLAND_ACTOR_SURFACE_H */
|