554644f9e0
This changes how asynchronous window configuration works. Prior to this commit, it worked by MetaWindowWayland remembering the last configuration it sent, then when the Wayland client got back to it, it tried to figure out whether it was a acknowledgment of the configuration or not, and finish the move. This failed if the client had acknowledged a configuration older than the last one sent, and it had hacks to somewhat deal with wl_shell's lack of configuration serial numbers. This commits scraps that and makes the MetaWindowWayland take ownership of sent configurations, including generating serial numbers. The wl_shell implementation is changed to emulate serial numbers (assuming each commit acknowledges the last sent configure event). Each configuration sent to the client is kept around until the client one. At this point, the position used for that particular configuration is used when applying the acknowledged state, meaning cases where we have already sent a new configuration when the client acknowledges a previous one, we'll still use the correct position for the window. https://gitlab.gnome.org/GNOME/mutter/merge_requests/907
63 lines
2.7 KiB
C
63 lines
2.7 KiB
C
/*
|
|
* Copyright (C) 2013 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_TYPES_H
|
|
#define META_WAYLAND_TYPES_H
|
|
|
|
typedef struct _MetaWaylandCompositor MetaWaylandCompositor;
|
|
|
|
typedef struct _MetaWaylandSeat MetaWaylandSeat;
|
|
typedef struct _MetaWaylandInputDevice MetaWaylandInputDevice;
|
|
typedef struct _MetaWaylandPointer MetaWaylandPointer;
|
|
typedef struct _MetaWaylandPointerGrab MetaWaylandPointerGrab;
|
|
typedef struct _MetaWaylandPointerGrabInterface MetaWaylandPointerGrabInterface;
|
|
typedef struct _MetaWaylandPopupGrab MetaWaylandPopupGrab;
|
|
typedef struct _MetaWaylandPopup MetaWaylandPopup;
|
|
typedef struct _MetaWaylandPopupSurface MetaWaylandPopupSurface;
|
|
typedef struct _MetaWaylandKeyboard MetaWaylandKeyboard;
|
|
typedef struct _MetaWaylandKeyboardGrab MetaWaylandKeyboardGrab;
|
|
typedef struct _MetaWaylandKeyboardGrabInterface MetaWaylandKeyboardGrabInterface;
|
|
typedef struct _MetaWaylandTouch MetaWaylandTouch;
|
|
typedef struct _MetaWaylandDragDestFuncs MetaWaylandDragDestFuncs;
|
|
typedef struct _MetaWaylandDataOffer MetaWaylandDataOffer;
|
|
typedef struct _MetaWaylandDataDevice MetaWaylandDataDevice;
|
|
|
|
typedef struct _MetaWaylandTabletManager MetaWaylandTabletManager;
|
|
typedef struct _MetaWaylandTabletSeat MetaWaylandTabletSeat;
|
|
typedef struct _MetaWaylandTabletTool MetaWaylandTabletTool;
|
|
typedef struct _MetaWaylandTablet MetaWaylandTablet;
|
|
typedef struct _MetaWaylandTabletPad MetaWaylandTabletPad;
|
|
typedef struct _MetaWaylandTabletPadGroup MetaWaylandTabletPadGroup;
|
|
typedef struct _MetaWaylandTabletPadStrip MetaWaylandTabletPadStrip;
|
|
typedef struct _MetaWaylandTabletPadRing MetaWaylandTabletPadRing;
|
|
|
|
typedef struct _MetaWaylandBuffer MetaWaylandBuffer;
|
|
typedef struct _MetaWaylandRegion MetaWaylandRegion;
|
|
|
|
typedef struct _MetaWaylandSurface MetaWaylandSurface;
|
|
typedef struct _MetaWaylandSurfaceState MetaWaylandSurfaceState;
|
|
|
|
typedef struct _MetaWaylandOutput MetaWaylandOutput;
|
|
|
|
typedef struct _MetaWaylandWindowConfiguration MetaWaylandWindowConfiguration;
|
|
|
|
typedef struct _MetaWaylandPointerClient MetaWaylandPointerClient;
|
|
|
|
#endif
|