Skip to content

Commit af44207

Browse files
authored
Reduce the number of windows_changed calls (#2314)
1 parent c4c7476 commit af44207

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

src/WindowTracker.vala

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -294,21 +294,31 @@ public class Gala.WindowTracker : GLib.Object {
294294
tracked_window_changed ((Meta.Window) object);
295295
}
296296

297+
private void on_unmanaged (Meta.Window window) {
298+
disassociate_window (window);
299+
300+
if (InternalUtils.get_window_is_normal (window)) {
301+
windows_changed ();
302+
}
303+
}
304+
297305
private void track_window (Meta.Window window) {
298306
var app = get_app_for_window (window);
299307
if (app == null) {
300308
return;
301309
}
302310

303-
window_to_app.insert (window, app);
304-
305311
window.notify["wm-class"].connect (tracked_window_notified);
306312
window.notify["gtk-application-id"].connect (tracked_window_notified);
307-
window.unmanaged.connect (disassociate_window);
313+
window.notify["window-type"].connect (tracked_window_notified);
314+
window.unmanaged.connect (on_unmanaged);
308315

309316
app.add_window (window);
317+
window_to_app.insert (window, app);
310318

311-
windows_changed ();
319+
if (InternalUtils.get_window_is_normal (window)) {
320+
windows_changed ();
321+
}
312322
}
313323

314324
private void disassociate_window (Meta.Window window) {
@@ -317,12 +327,12 @@ public class Gala.WindowTracker : GLib.Object {
317327
return;
318328
}
319329

320-
window.unmanaged.disconnect (disassociate_window);
321330
window.notify["wm-class"].disconnect (tracked_window_notified);
322331
window.notify["gtk-application-id"].disconnect (tracked_window_notified);
332+
window.notify["window-type"].disconnect (tracked_window_notified);
333+
window.unmanaged.disconnect (on_unmanaged);
334+
323335
app.remove_window (window);
324336
window_to_app.remove (window);
325-
326-
windows_changed ();
327337
}
328338
}

0 commit comments

Comments
 (0)