workspace: Iterate windowSlots directly when allocating
We can save a little bit of time in this loop by iterating directly over the windowSlots array instead of iterating through children and then performing a search for the windowSlot. This saves more time and we only spend 2.2 ms instead of 2.3 ms in vfunc_allocate() now. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1743>
This commit is contained in:
parent
04c781674c
commit
e75f3a8aed
@ -626,19 +626,12 @@ var WorkspaceLayout = GObject.registerClass({
|
|||||||
const inSessionTransition =
|
const inSessionTransition =
|
||||||
this._overviewAdjustment.value <= ControlsState.WINDOW_PICKER;
|
this._overviewAdjustment.value <= ControlsState.WINDOW_PICKER;
|
||||||
|
|
||||||
for (const child of container) {
|
const nSlots = this._windowSlots.length;
|
||||||
|
for (let i = 0; i < nSlots; i++) {
|
||||||
|
const [x, y, width, height, child] = this._windowSlots[i];
|
||||||
if (!child.visible)
|
if (!child.visible)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// The fifth element in the slot array is the WindowPreview
|
|
||||||
const index = this._windowSlots.findIndex(s => s[4] === child);
|
|
||||||
if (index === -1) {
|
|
||||||
log('Couldn\'t find child %s in window slots'.format(child));
|
|
||||||
child.allocate(childBox);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const [x, y, width, height] = this._windowSlots[index];
|
|
||||||
const windowInfo = this._windows.get(child);
|
const windowInfo = this._windows.get(child);
|
||||||
|
|
||||||
if (windowInfo.metaWindow.showing_on_its_workspace()) {
|
if (windowInfo.metaWindow.showing_on_its_workspace()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user