Don't calculate the main window monitor every time it`s needed
The main monitor of a window is maintained as 'window->monitor' and is updated when the window is resized or moved. Lets avoid calculating it every time it`s needed. https://bugzilla.gnome.org/show_bug.cgi?id=744934
This commit is contained in:
parent
441efd17ce
commit
14b0a83f64
@ -3186,7 +3186,7 @@ handle_move_to_monitor (MetaDisplay *display,
|
|||||||
gint which = binding->handler->data;
|
gint which = binding->handler->data;
|
||||||
const MetaMonitorInfo *current, *new;
|
const MetaMonitorInfo *current, *new;
|
||||||
|
|
||||||
current = meta_screen_get_monitor_for_window (screen, window);
|
current = window->monitor;
|
||||||
new = meta_screen_get_monitor_neighbor (screen, current->number, which);
|
new = meta_screen_get_monitor_neighbor (screen, current->number, which);
|
||||||
|
|
||||||
if (new == NULL)
|
if (new == NULL)
|
||||||
|
@ -149,8 +149,8 @@ const MetaMonitorInfo* meta_screen_get_current_monitor_info_for_pos (MetaScree
|
|||||||
int y);
|
int y);
|
||||||
const MetaMonitorInfo* meta_screen_get_monitor_for_rect (MetaScreen *screen,
|
const MetaMonitorInfo* meta_screen_get_monitor_for_rect (MetaScreen *screen,
|
||||||
MetaRectangle *rect);
|
MetaRectangle *rect);
|
||||||
const MetaMonitorInfo* meta_screen_get_monitor_for_window (MetaScreen *screen,
|
const MetaMonitorInfo* meta_screen_calculate_monitor_for_window (MetaScreen *screen,
|
||||||
MetaWindow *window);
|
MetaWindow *window);
|
||||||
|
|
||||||
|
|
||||||
const MetaMonitorInfo* meta_screen_get_monitor_neighbor (MetaScreen *screen,
|
const MetaMonitorInfo* meta_screen_get_monitor_neighbor (MetaScreen *screen,
|
||||||
|
@ -1439,8 +1439,8 @@ meta_screen_get_monitor_for_rect (MetaScreen *screen,
|
|||||||
}
|
}
|
||||||
|
|
||||||
const MetaMonitorInfo*
|
const MetaMonitorInfo*
|
||||||
meta_screen_get_monitor_for_window (MetaScreen *screen,
|
meta_screen_calculate_monitor_for_window (MetaScreen *screen,
|
||||||
MetaWindow *window)
|
MetaWindow *window)
|
||||||
{
|
{
|
||||||
MetaRectangle window_rect;
|
MetaRectangle window_rect;
|
||||||
|
|
||||||
|
@ -288,8 +288,7 @@ windows_on_different_monitor (MetaWindow *a,
|
|||||||
if (a->screen != b->screen)
|
if (a->screen != b->screen)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
return meta_screen_get_monitor_for_window (a->screen, a) !=
|
return a->monitor != b->monitor;
|
||||||
meta_screen_get_monitor_for_window (b->screen, b);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get layer ignoring any transient or group relationships */
|
/* Get layer ignoring any transient or group relationships */
|
||||||
|
@ -981,7 +981,8 @@ _meta_window_shared_new (MetaDisplay *display,
|
|||||||
|
|
||||||
window->compositor_private = NULL;
|
window->compositor_private = NULL;
|
||||||
|
|
||||||
window->monitor = meta_screen_get_monitor_for_window (window->screen, window);
|
window->monitor = meta_screen_calculate_monitor_for_window (window->screen,
|
||||||
|
window);
|
||||||
window->preferred_output_winsys_id = window->monitor->winsys_id;
|
window->preferred_output_winsys_id = window->monitor->winsys_id;
|
||||||
|
|
||||||
window->tile_match = NULL;
|
window->tile_match = NULL;
|
||||||
@ -3546,7 +3547,8 @@ meta_window_update_monitor (MetaWindow *window,
|
|||||||
const MetaMonitorInfo *old;
|
const MetaMonitorInfo *old;
|
||||||
|
|
||||||
old = window->monitor;
|
old = window->monitor;
|
||||||
window->monitor = meta_screen_get_monitor_for_window (window->screen, window);
|
window->monitor = meta_screen_calculate_monitor_for_window (window->screen,
|
||||||
|
window);
|
||||||
if (old != window->monitor)
|
if (old != window->monitor)
|
||||||
{
|
{
|
||||||
meta_window_on_all_workspaces_changed (window);
|
meta_window_on_all_workspaces_changed (window);
|
||||||
@ -5638,7 +5640,7 @@ update_move (MetaWindow *window,
|
|||||||
int monitor;
|
int monitor;
|
||||||
|
|
||||||
window->tile_mode = META_TILE_NONE;
|
window->tile_mode = META_TILE_NONE;
|
||||||
wmonitor = meta_screen_get_monitor_for_window (window->screen, window);
|
wmonitor = window->monitor;
|
||||||
|
|
||||||
for (monitor = 0; monitor < window->screen->n_monitor_infos; monitor++)
|
for (monitor = 0; monitor < window->screen->n_monitor_infos; monitor++)
|
||||||
{
|
{
|
||||||
@ -6047,12 +6049,8 @@ void
|
|||||||
meta_window_get_work_area_current_monitor (MetaWindow *window,
|
meta_window_get_work_area_current_monitor (MetaWindow *window,
|
||||||
MetaRectangle *area)
|
MetaRectangle *area)
|
||||||
{
|
{
|
||||||
const MetaMonitorInfo *monitor = NULL;
|
|
||||||
monitor = meta_screen_get_monitor_for_window (window->screen,
|
|
||||||
window);
|
|
||||||
|
|
||||||
meta_window_get_work_area_for_monitor (window,
|
meta_window_get_work_area_for_monitor (window,
|
||||||
monitor->number,
|
window->monitor->number,
|
||||||
area);
|
area);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user