diff options
author | Bilal Elmoussaoui <belmouss@redhat.com> | 2022-05-18 13:51:44 +0200 |
---|---|---|
committer | Marge Bot <marge-bot@gnome.org> | 2022-11-17 11:30:56 +0000 |
commit | 6b77532a231420ea112441e7da4ef77c4bf7d40d (patch) | |
tree | 8823fc801c11cc050844a582cd0e1eec4e8bf817 /src/core/window.c | |
parent | c3a01e4e18de56cfc10255853e57b3adb869d086 (diff) | |
download | mutter-6b77532a231420ea112441e7da4ef77c4bf7d40d.tar.gz |
window: Move surface property to it subclasses
As we have specific window types per display server,
having it in the parent class makes building without wayland
harder to achieve
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2418>
Diffstat (limited to 'src/core/window.c')
-rw-r--r-- | src/core/window.c | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/src/core/window.c b/src/core/window.c index bd4d36298..7faa3e95c 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -197,7 +197,6 @@ enum PROP_IS_ALIVE, PROP_DISPLAY, PROP_EFFECT, - PROP_SURFACE, PROP_XWINDOW, PROP_LAST, @@ -418,9 +417,6 @@ meta_window_get_property(GObject *object, case PROP_EFFECT: g_value_set_int (value, win->pending_compositor_effect); break; - case PROP_SURFACE: - g_value_set_pointer (value, win->surface); - break; case PROP_XWINDOW: g_value_set_ulong (value, win->xwindow); break; @@ -446,9 +442,6 @@ meta_window_set_property(GObject *object, case PROP_EFFECT: win->pending_compositor_effect = g_value_get_int (value); break; - case PROP_SURFACE: - win->surface = g_value_get_pointer (value); - break; case PROP_XWINDOW: win->xwindow = g_value_get_ulong (value); break; @@ -834,9 +827,12 @@ static gboolean client_window_should_be_mapped (MetaWindow *window) { #ifdef HAVE_WAYLAND - if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND && - !meta_wayland_surface_get_buffer (window->surface)) - return FALSE; + if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND) + { + MetaWaylandSurface *surface = meta_window_get_wayland_surface (window); + if (!meta_wayland_surface_get_buffer (surface)) + return FALSE; + } #endif return !window->shaded; @@ -1683,9 +1679,12 @@ meta_window_should_be_showing (MetaWindow *window) MetaWorkspaceManager *workspace_manager = window->display->workspace_manager; #ifdef HAVE_WAYLAND - if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND && - !meta_wayland_surface_get_buffer (window->surface)) - return FALSE; + if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND) + { + MetaWaylandSurface *surface = meta_window_get_wayland_surface (window); + if (!meta_wayland_surface_get_buffer (surface)) + return FALSE; + } #endif /* Windows should be showing if they're located on the @@ -4503,7 +4502,10 @@ meta_window_transient_can_focus (MetaWindow *window) { #ifdef HAVE_WAYLAND if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND) - return meta_wayland_surface_get_buffer (window->surface) != NULL; + { + MetaWaylandSurface *surface = meta_window_get_wayland_surface (window); + return meta_wayland_surface_get_buffer (surface) != NULL; + } #endif return TRUE; @@ -8526,6 +8528,17 @@ meta_window_calculate_layer (MetaWindow *window) return META_WINDOW_GET_CLASS (window)->calculate_layer (window); } +#ifdef HAVE_WAYLAND +MetaWaylandSurface * +meta_window_get_wayland_surface (MetaWindow *window) +{ + MetaWindowClass *klass = META_WINDOW_GET_CLASS (window); + g_return_val_if_fail (klass->get_wayland_surface != NULL, NULL); + + return klass->get_wayland_surface (window); +} +#endif + /** * meta_window_get_id: * @window: a #MetaWindow |