Skip to content

Commit d49ee61

Browse files
committed
Use XShape... again
1 parent fd97189 commit d49ee61

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

lib/Utils.vala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ namespace Gala {
404404
return texture;
405405
}
406406

407-
private static HashTable<Meta.Window, X.XserverRegion?> regions = new HashTable<Meta.Window, X.XserverRegion?> (null, null);
407+
private static HashTable<Meta.Window, X.Rectangle?> regions = new HashTable<Meta.Window, X.Rectangle?> (null, null);
408408

409409
public static void x11_set_window_pass_through (Meta.Window window) {
410410
unowned var x11_display = window.display.get_x11_display ();
@@ -416,7 +416,8 @@ namespace Gala {
416416
#endif
417417
unowned var xdisplay = x11_display.get_xdisplay ();
418418

419-
regions[window] = X.Fixes.create_region_from_window (xdisplay, x_window, 0);
419+
int count, ordering;
420+
regions[window] = X.Shape.get_rectangles (xdisplay, x_window, 2, out count, out ordering)[0];
420421

421422
X.Xrectangle rect = {};
422423
var region = X.Fixes.create_region (xdisplay, {rect});
@@ -443,7 +444,7 @@ namespace Gala {
443444
return;
444445
}
445446

446-
X.Fixes.set_window_shape_region (xdisplay, x_window, 2, 0, 0, region);
447+
X.Shape.combine_rectangles (xdisplay, x_window, 2, 0, 0, { region }, 0, 3);
447448
} else {
448449
X.Fixes.set_window_shape_region (xdisplay, x_window, 2, 0, 0, (X.XserverRegion) 0);
449450
}

meson.build

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ gnome_desktop_dep = dependency('gnome-desktop-3.0')
9494
m_dep = cc.find_library('m', required: false)
9595
posix_dep = vala.find_library('posix', required: false)
9696
sqlite3_dep = dependency('sqlite3')
97+
xext_dep = cc.find_library('Xext', required: true)
9798
if get_option('systemd')
9899
systemd_dep = dependency('libsystemd')
99100
endif
@@ -149,7 +150,7 @@ endif
149150
add_project_arguments(vala_flags, language: 'vala')
150151
add_project_link_arguments(['-Wl,-rpath,@0@'.format(mutter_typelib_dir)], language: 'c')
151152

152-
gala_base_dep = [atk_bridge_dep, canberra_dep, glib_dep, gobject_dep, gio_dep, gio_unix_dep, gmodule_dep, gee_dep, gtk_dep, mutter_dep, gnome_desktop_dep, m_dep, posix_dep, sqlite3_dep, config_dep]
153+
gala_base_dep = [atk_bridge_dep, canberra_dep, glib_dep, gobject_dep, gio_dep, gio_unix_dep, gmodule_dep, gee_dep, gtk_dep, mutter_dep, gnome_desktop_dep, m_dep, posix_dep, sqlite3_dep, xext_dep, config_dep]
153154

154155
if get_option('systemd')
155156
gala_base_dep += systemd_dep

vapi/xfixes-4.0.vapi

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ namespace X {
1212
public static void destroy_region (X.Display display, X.XserverRegion region);
1313
[CCode (cheader_filename = "X11/extensions/Xfixes.h", cname = "XFixesSetWindowShapeRegion")]
1414
public static void set_window_shape_region (X.Display display, X.Window win, int shape_kind, int x_off, int y_off, XserverRegion region);
15+
}
16+
namespace Shape {
17+
[CCode (cheader_filename = "X11/extensions/shape.h", cname = "XShapeGetRectangles")]
18+
public static X.Rectangle* get_rectangles (X.Display display, X.Window win, int kind, out int count, out int ordering);
19+
[CCode (cheader_filename = "X11/extensions/shape.h", cname = "XShapeCombineRectangles")]
20+
public static void combine_rectangles (X.Display display, X.Window win, int kind, int x, int y, [CCode (array_length_cname = "count", type = "XRectangle*")] X.Rectangle[] rectangles, int op, int ordering);
1521
}
1622
[SimpleType]
1723
[CCode (cheader_filename = "X11/extensions/Xfixes.h", cname = "XserverRegion", has_type_id = false)]

0 commit comments

Comments
 (0)