gnome-shell/src/shell-window-preview-layout.h
Jonas Dreßler 04c781674c Move WindowPreviewLayout from JS to C
This layout manager is used quite often and the time we spend calling
it's allocate and get_preferred_width/heigth functions increases with
every open window.

We can save a lot of precious time during the layout cycle by moving
this layout manager from JS to C, thus avoiding the overhead of
trampolining between C and JS land.

In a measurement where the average time spent in vfunc_allocate() of the
Workspace actor was measured while opening an overview with 20 windows,
the average time spent went down from 3.1 ms to 2.3 ms.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1743>
2021-03-09 15:40:49 +00:00

34 lines
1.1 KiB
C

#ifndef __SHELL_WINDOW_PREVIEW_LAYOUT_H__
#define __SHELL_WINDOW_PREVIEW_LAYOUT_H__
G_BEGIN_DECLS
#include <clutter/clutter.h>
#define SHELL_TYPE_WINDOW_PREVIEW_LAYOUT (shell_window_preview_layout_get_type ())
G_DECLARE_FINAL_TYPE (ShellWindowPreviewLayout, shell_window_preview_layout,
SHELL, WINDOW_PREVIEW_LAYOUT, ClutterLayoutManager)
typedef struct _ShellWindowPreviewLayout ShellWindowPreviewLayout;
typedef struct _ShellWindowPreviewLayoutPrivate ShellWindowPreviewLayoutPrivate;
struct _ShellWindowPreviewLayout
{
/*< private >*/
ClutterLayoutManager parent;
ShellWindowPreviewLayoutPrivate *priv;
};
ClutterActor * shell_window_preview_layout_add_window (ShellWindowPreviewLayout *self,
MetaWindow *window);
void shell_window_preview_layout_remove_window (ShellWindowPreviewLayout *self,
MetaWindow *window);
GList * shell_window_preview_layout_get_windows (ShellWindowPreviewLayout *self);
G_END_DECLS
#endif /* __SHELL_WINDOW_PREVIEW_LAYOUT_H__ */