summaryrefslogtreecommitdiff
path: root/src/core/window.c
diff options
context:
space:
mode:
authorBilal Elmoussaoui <belmouss@redhat.com>2022-05-18 13:51:44 +0200
committerMarge Bot <marge-bot@gnome.org>2022-11-17 11:30:56 +0000
commit6b77532a231420ea112441e7da4ef77c4bf7d40d (patch)
tree8823fc801c11cc050844a582cd0e1eec4e8bf817 /src/core/window.c
parentc3a01e4e18de56cfc10255853e57b3adb869d086 (diff)
downloadmutter-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.c41
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