[mutter] window/x11: Use G_DECLARE_DERIVABLE_TYPE()
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] window/x11: Use G_DECLARE_DERIVABLE_TYPE()
- Date: Thu, 16 Apr 2020 14:08:26 +0000 (UTC)
commit 0f8f607e4c502a87d8f5aedf7de6944c50689e5f
Author: Jonas Ådahl <jadahl gmail com>
Date: Tue Aug 20 21:38:35 2019 +0200
window/x11: Use G_DECLARE_DERIVABLE_TYPE()
This removes the MetaWindowX11::priv pointer. It is replaced with a
meta_window_x11_get_private() helper function, and another method to get
the client rect without going through MetaWindowX11Private.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/798
src/ui/frames.c | 16 ++++++++++------
src/x11/window-props.c | 14 +++++++-------
src/x11/window-x11-private.h | 19 +++----------------
src/x11/window-x11.c | 15 ++++++++++++++-
src/x11/window-x11.h | 25 ++++++++++++++-----------
5 files changed, 48 insertions(+), 41 deletions(-)
---
diff --git a/src/ui/frames.c b/src/ui/frames.c
index 0f3bcbd2b..58d653543 100644
--- a/src/ui/frames.c
+++ b/src/ui/frames.c
@@ -417,7 +417,7 @@ meta_ui_frame_calc_geometry (MetaUIFrame *frame,
MetaFrameType type;
MetaButtonLayout button_layout;
MetaWindowX11 *window_x11 = META_WINDOW_X11 (frame->meta_window);
- MetaWindowX11Private *priv = window_x11->priv;
+ MetaRectangle client_rect;
flags = meta_frame_get_flags (frame->meta_window->frame);
type = meta_window_get_frame_type (frame->meta_window);
@@ -426,13 +426,15 @@ meta_ui_frame_calc_geometry (MetaUIFrame *frame,
meta_prefs_get_button_layout (&button_layout);
+ client_rect = meta_window_x11_get_client_rect (window_x11);
+
meta_theme_calc_geometry (meta_theme_get_default (),
frame->style_info,
type,
frame->text_height,
flags,
- priv->client_rect.width,
- priv->client_rect.height,
+ client_rect.width,
+ client_rect.height,
&button_layout,
fgeom);
}
@@ -1520,7 +1522,7 @@ meta_ui_frame_paint (MetaUIFrame *frame,
int button_type = -1;
MetaButtonLayout button_layout;
MetaWindowX11 *window_x11 = META_WINDOW_X11 (frame->meta_window);
- MetaWindowX11Private *priv = window_x11->priv;
+ MetaRectangle client_rect;
for (i = 0; i < META_BUTTON_TYPE_LAST; i++)
button_states[i] = META_BUTTON_STATE_NORMAL;
@@ -1558,13 +1560,15 @@ meta_ui_frame_paint (MetaUIFrame *frame,
meta_prefs_get_button_layout (&button_layout);
+ client_rect = meta_window_x11_get_client_rect (window_x11);
+
meta_theme_draw_frame (meta_theme_get_default (),
frame->style_info,
cr,
type,
flags,
- priv->client_rect.width,
- priv->client_rect.height,
+ client_rect.width,
+ client_rect.height,
frame->text_layout,
frame->text_height,
&button_layout,
diff --git a/src/x11/window-props.c b/src/x11/window-props.c
index 3cad2cd1d..0596166cb 100644
--- a/src/x11/window-props.c
+++ b/src/x11/window-props.c
@@ -249,7 +249,7 @@ reload_net_wm_window_type (MetaWindow *window,
{
MetaX11Display *x11_display = window->display->x11_display;
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
- MetaWindowX11Private *priv = window_x11->priv;
+ MetaWindowX11Private *priv = meta_window_x11_get_private (window_x11);
if (value->type != META_PROP_VALUE_INVALID)
{
@@ -291,7 +291,7 @@ reload_icon (MetaWindow *window,
Atom atom)
{
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
- MetaWindowX11Private *priv = window_x11->priv;
+ MetaWindowX11Private *priv = meta_window_x11_get_private (window_x11);
meta_icon_cache_property_changed (&priv->icon_cache,
window->display->x11_display,
@@ -596,7 +596,7 @@ set_window_title (MetaWindow *window,
const char *title)
{
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
- MetaWindowX11Private *priv = window_x11->priv;
+ MetaWindowX11Private *priv = meta_window_x11_get_private (window_x11);
char *new_title = NULL;
@@ -619,7 +619,7 @@ reload_net_wm_name (MetaWindow *window,
gboolean initial)
{
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
- MetaWindowX11Private *priv = window_x11->priv;
+ MetaWindowX11Private *priv = meta_window_x11_get_private (window_x11);
if (value->type != META_PROP_VALUE_INVALID)
{
@@ -644,7 +644,7 @@ reload_wm_name (MetaWindow *window,
gboolean initial)
{
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
- MetaWindowX11Private *priv = window_x11->priv;
+ MetaWindowX11Private *priv = meta_window_x11_get_private (window_x11);
if (priv->using_net_wm_name)
{
@@ -784,7 +784,7 @@ reload_net_wm_state (MetaWindow *window,
{
MetaX11Display *x11_display = window->display->x11_display;
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
- MetaWindowX11Private *priv = window_x11->priv;
+ MetaWindowX11Private *priv = meta_window_x11_get_private (window_x11);
int i;
@@ -1565,7 +1565,7 @@ reload_wm_hints (MetaWindow *window,
gboolean initial)
{
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
- MetaWindowX11Private *priv = window_x11->priv;
+ MetaWindowX11Private *priv = meta_window_x11_get_private (window_x11);
Window old_group_leader;
gboolean urgent;
diff --git a/src/x11/window-x11-private.h b/src/x11/window-x11-private.h
index 906d44546..2ffaa85d4 100644
--- a/src/x11/window-x11-private.h
+++ b/src/x11/window-x11-private.h
@@ -25,27 +25,12 @@
#include "core/window-private.h"
#include "x11/iconcache.h"
+#include "x11/window-x11.h"
G_BEGIN_DECLS
typedef struct _MetaWindowX11Private MetaWindowX11Private;
-struct _MetaWindowX11Class
-{
- MetaWindowClass parent_class;
-
- void (*freeze_commits) (MetaWindow *window);
- void (*thaw_commits) (MetaWindow *window);
- gboolean (*always_update_shape) (MetaWindow *window);
-};
-
-struct _MetaWindowX11
-{
- MetaWindow parent;
-
- MetaWindowX11Private *priv;
-};
-
struct _MetaWindowX11Private
{
/* TRUE if the client forced these on */
@@ -81,6 +66,8 @@ struct _MetaWindowX11Private
gboolean thaw_after_paint;
};
+MetaWindowX11Private * meta_window_x11_get_private (MetaWindowX11 *window_x11);
+
G_END_DECLS
#endif
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
index ed56bca5f..4d850943d 100644
--- a/src/x11/window-x11.c
+++ b/src/x11/window-x11.c
@@ -73,7 +73,12 @@ meta_window_x11_maybe_focus_delayed (MetaWindow *window,
static void
meta_window_x11_init (MetaWindowX11 *window_x11)
{
- window_x11->priv = meta_window_x11_get_instance_private (window_x11);
+}
+
+MetaWindowX11Private *
+meta_window_x11_get_private (MetaWindowX11 *window_x11)
+{
+ return meta_window_x11_get_instance_private (window_x11);
}
static void
@@ -4108,3 +4113,11 @@ meta_window_x11_surface_rect_to_client_rect (MetaWindow *window,
client_rect->width -= borders.total.left + borders.total.right;
client_rect->height -= borders.total.top + borders.total.bottom;
}
+
+MetaRectangle
+meta_window_x11_get_client_rect (MetaWindowX11 *window_x11)
+{
+ MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
+
+ return priv->client_rect;
+}
diff --git a/src/x11/window-x11.h b/src/x11/window-x11.h
index d41d0d156..591d8f951 100644
--- a/src/x11/window-x11.h
+++ b/src/x11/window-x11.h
@@ -25,24 +25,24 @@
#include <X11/Xlib.h>
+#include "core/window-private.h"
#include "meta/compositor.h"
#include "meta/window.h"
G_BEGIN_DECLS
-#define META_TYPE_WINDOW_X11 (meta_window_x11_get_type())
-#define META_WINDOW_X11(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_WINDOW_X11,
MetaWindowX11))
-#define META_WINDOW_X11_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_WINDOW_X11,
MetaWindowX11Class))
-#define META_IS_WINDOW_X11(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_WINDOW_X11))
-#define META_IS_WINDOW_X11_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_WINDOW_X11))
-#define META_WINDOW_X11_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_WINDOW_X11,
MetaWindowX11Class))
+#define META_TYPE_WINDOW_X11 (meta_window_x11_get_type())
+G_DECLARE_DERIVABLE_TYPE (MetaWindowX11, meta_window_x11,
+ META, WINDOW_X11, MetaWindow)
-GType meta_window_x11_get_type (void);
+struct _MetaWindowX11Class
+{
+ MetaWindowClass parent_class;
-typedef struct _MetaWindowX11 MetaWindowX11;
-typedef struct _MetaWindowX11Class MetaWindowX11Class;
-
-G_DEFINE_AUTOPTR_CLEANUP_FUNC (MetaWindowX11, g_object_unref)
+ void (*freeze_commits) (MetaWindow *window);
+ void (*thaw_commits) (MetaWindow *window);
+ gboolean (*always_update_shape) (MetaWindow *window);
+};
MetaWindow * meta_window_x11_new (MetaDisplay *display,
Window xwindow,
@@ -95,4 +95,7 @@ void meta_window_x11_surface_rect_to_frame_rect (MetaWindow *window,
void meta_window_x11_surface_rect_to_client_rect (MetaWindow *window,
MetaRectangle *surface_rect,
MetaRectangle *client_rect);
+
+MetaRectangle meta_window_x11_get_client_rect (MetaWindowX11 *window_x11);
+
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]