re-shuffle struct members to save a bit of memory
Analysis done with pahole(1).
This commit is contained in:
parent
80e7d2d346
commit
a99fc537fc
|
@ -25,13 +25,13 @@ struct CommandResult {
|
||||||
/* The JSON generator to append a reply to. */
|
/* The JSON generator to append a reply to. */
|
||||||
yajl_gen json_gen;
|
yajl_gen json_gen;
|
||||||
|
|
||||||
/* Whether the command requires calling tree_render. */
|
|
||||||
bool needs_tree_render;
|
|
||||||
|
|
||||||
/* The next state to transition to. Passed to the function so that we can
|
/* The next state to transition to. Passed to the function so that we can
|
||||||
* determine the next state as a result of a function call, like
|
* determine the next state as a result of a function call, like
|
||||||
* cfg_criteria_pop_state() does. */
|
* cfg_criteria_pop_state() does. */
|
||||||
int next_state;
|
int next_state;
|
||||||
|
|
||||||
|
/* Whether the command requires calling tree_render. */
|
||||||
|
bool needs_tree_render;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CommandResult *parse_command(const char *input);
|
struct CommandResult *parse_command(const char *input);
|
||||||
|
|
|
@ -146,8 +146,8 @@ struct deco_render_params {
|
||||||
struct width_height con_window_rect;
|
struct width_height con_window_rect;
|
||||||
Rect con_deco_rect;
|
Rect con_deco_rect;
|
||||||
uint32_t background;
|
uint32_t background;
|
||||||
bool con_is_leaf;
|
|
||||||
layout_t parent_layout;
|
layout_t parent_layout;
|
||||||
|
bool con_is_leaf;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -228,6 +228,14 @@ struct Binding {
|
||||||
B_UPON_KEYRELEASE_IGNORE_MODS = 2,
|
B_UPON_KEYRELEASE_IGNORE_MODS = 2,
|
||||||
} release;
|
} release;
|
||||||
|
|
||||||
|
uint32_t number_keycodes;
|
||||||
|
|
||||||
|
/** Keycode to bind */
|
||||||
|
uint32_t keycode;
|
||||||
|
|
||||||
|
/** Bitmask consisting of BIND_MOD_1, BIND_MODE_SWITCH, … */
|
||||||
|
uint32_t mods;
|
||||||
|
|
||||||
/** Symbol the user specified in configfile, if any. This needs to be
|
/** Symbol the user specified in configfile, if any. This needs to be
|
||||||
* stored with the binding to be able to re-convert it into a keycode
|
* stored with the binding to be able to re-convert it into a keycode
|
||||||
* if the keyboard mapping changes (using Xmodmap for example) */
|
* if the keyboard mapping changes (using Xmodmap for example) */
|
||||||
|
@ -240,13 +248,6 @@ struct Binding {
|
||||||
* This is an array of number_keycodes size. */
|
* This is an array of number_keycodes size. */
|
||||||
xcb_keycode_t *translated_to;
|
xcb_keycode_t *translated_to;
|
||||||
|
|
||||||
uint32_t number_keycodes;
|
|
||||||
|
|
||||||
/** Keycode to bind */
|
|
||||||
uint32_t keycode;
|
|
||||||
|
|
||||||
/** Bitmask consisting of BIND_MOD_1, BIND_MODE_SWITCH, … */
|
|
||||||
uint32_t mods;
|
|
||||||
|
|
||||||
/** Command, like in command mode */
|
/** Command, like in command mode */
|
||||||
char *command;
|
char *command;
|
||||||
|
@ -281,11 +282,6 @@ struct Autostart {
|
||||||
struct xoutput {
|
struct xoutput {
|
||||||
/** Output id, so that we can requery the output directly later */
|
/** Output id, so that we can requery the output directly later */
|
||||||
xcb_randr_output_t id;
|
xcb_randr_output_t id;
|
||||||
/** Name of the output */
|
|
||||||
char *name;
|
|
||||||
|
|
||||||
/** Pointer to the Con which represents this output */
|
|
||||||
Con *con;
|
|
||||||
|
|
||||||
/** Whether the output is currently active (has a CRTC attached with a
|
/** Whether the output is currently active (has a CRTC attached with a
|
||||||
* valid mode) */
|
* valid mode) */
|
||||||
|
@ -297,6 +293,12 @@ struct xoutput {
|
||||||
bool to_be_disabled;
|
bool to_be_disabled;
|
||||||
bool primary;
|
bool primary;
|
||||||
|
|
||||||
|
/** Name of the output */
|
||||||
|
char *name;
|
||||||
|
|
||||||
|
/** Pointer to the Con which represents this output */
|
||||||
|
Con *con;
|
||||||
|
|
||||||
/** x, y, width, height */
|
/** x, y, width, height */
|
||||||
Rect rect;
|
Rect rect;
|
||||||
|
|
||||||
|
@ -316,6 +318,11 @@ struct Window {
|
||||||
xcb_window_t leader;
|
xcb_window_t leader;
|
||||||
xcb_window_t transient_for;
|
xcb_window_t transient_for;
|
||||||
|
|
||||||
|
/** Pointers to the Assignments which were already ran for this Window
|
||||||
|
* (assignments run only once) */
|
||||||
|
uint32_t nr_assignments;
|
||||||
|
Assignment **ran_assignments;
|
||||||
|
|
||||||
char *class_class;
|
char *class_class;
|
||||||
char *class_instance;
|
char *class_instance;
|
||||||
|
|
||||||
|
@ -336,9 +343,6 @@ struct Window {
|
||||||
/** Whether the application needs to receive WM_TAKE_FOCUS */
|
/** Whether the application needs to receive WM_TAKE_FOCUS */
|
||||||
bool needs_take_focus;
|
bool needs_take_focus;
|
||||||
|
|
||||||
/** When this window was marked urgent. 0 means not urgent */
|
|
||||||
struct timeval urgent;
|
|
||||||
|
|
||||||
/** Whether this window accepts focus. We store this inverted so that the
|
/** Whether this window accepts focus. We store this inverted so that the
|
||||||
* default will be 'accepts focus'. */
|
* default will be 'accepts focus'. */
|
||||||
bool doesnt_accept_focus;
|
bool doesnt_accept_focus;
|
||||||
|
@ -346,14 +350,12 @@ struct Window {
|
||||||
/** Whether the window says it is a dock window */
|
/** Whether the window says it is a dock window */
|
||||||
enum { W_NODOCK = 0, W_DOCK_TOP = 1, W_DOCK_BOTTOM = 2 } dock;
|
enum { W_NODOCK = 0, W_DOCK_TOP = 1, W_DOCK_BOTTOM = 2 } dock;
|
||||||
|
|
||||||
|
/** When this window was marked urgent. 0 means not urgent */
|
||||||
|
struct timeval urgent;
|
||||||
|
|
||||||
/** Pixels the window reserves. left/right/top/bottom */
|
/** Pixels the window reserves. left/right/top/bottom */
|
||||||
struct reservedpx reserved;
|
struct reservedpx reserved;
|
||||||
|
|
||||||
/** Pointers to the Assignments which were already ran for this Window
|
|
||||||
* (assignments run only once) */
|
|
||||||
uint32_t nr_assignments;
|
|
||||||
Assignment **ran_assignments;
|
|
||||||
|
|
||||||
/** Depth of the window */
|
/** Depth of the window */
|
||||||
uint16_t depth;
|
uint16_t depth;
|
||||||
};
|
};
|
||||||
|
@ -386,8 +388,8 @@ struct Match {
|
||||||
M_DOCK_BOTTOM = 3
|
M_DOCK_BOTTOM = 3
|
||||||
} dock;
|
} dock;
|
||||||
xcb_window_t id;
|
xcb_window_t id;
|
||||||
Con *con_id;
|
|
||||||
enum { M_ANY = 0, M_TILING, M_FLOATING } floating;
|
enum { M_ANY = 0, M_TILING, M_FLOATING } floating;
|
||||||
|
Con *con_id;
|
||||||
|
|
||||||
/* Where the window looking for a match should be inserted:
|
/* Where the window looking for a match should be inserted:
|
||||||
*
|
*
|
||||||
|
@ -400,12 +402,12 @@ struct Match {
|
||||||
*/
|
*/
|
||||||
enum { M_HERE = 0, M_ASSIGN_WS, M_BELOW } insert_where;
|
enum { M_HERE = 0, M_ASSIGN_WS, M_BELOW } insert_where;
|
||||||
|
|
||||||
|
TAILQ_ENTRY(Match) matches;
|
||||||
|
|
||||||
/* Whether this match was generated when restarting i3 inplace.
|
/* Whether this match was generated when restarting i3 inplace.
|
||||||
* Leads to not setting focus when managing a new window, because the old
|
* Leads to not setting focus when managing a new window, because the old
|
||||||
* focus stack should be restored. */
|
* focus stack should be restored. */
|
||||||
bool restart_mode;
|
bool restart_mode;
|
||||||
|
|
||||||
TAILQ_ENTRY(Match) matches;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -454,6 +456,24 @@ struct Assignment {
|
||||||
*/
|
*/
|
||||||
struct Con {
|
struct Con {
|
||||||
bool mapped;
|
bool mapped;
|
||||||
|
|
||||||
|
/* Should this container be marked urgent? This gets set when the window
|
||||||
|
* inside this container (if any) sets the urgency hint, for example. */
|
||||||
|
bool urgent;
|
||||||
|
|
||||||
|
/** This counter contains the number of UnmapNotify events for this
|
||||||
|
* container (or, more precisely, for its ->frame) which should be ignored.
|
||||||
|
* UnmapNotify events need to be ignored when they are caused by i3 itself,
|
||||||
|
* for example when reparenting or when unmapping the window on a workspace
|
||||||
|
* change. */
|
||||||
|
uint8_t ignore_unmap;
|
||||||
|
|
||||||
|
/* ids/pixmap/graphics context for the frame window */
|
||||||
|
bool pixmap_recreated;
|
||||||
|
xcb_window_t frame;
|
||||||
|
xcb_pixmap_t pixmap;
|
||||||
|
xcb_gcontext_t pm_gc;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
CT_ROOT = 0,
|
CT_ROOT = 0,
|
||||||
CT_OUTPUT = 1,
|
CT_OUTPUT = 1,
|
||||||
|
@ -462,6 +482,11 @@ struct Con {
|
||||||
CT_WORKSPACE = 4,
|
CT_WORKSPACE = 4,
|
||||||
CT_DOCKAREA = 5
|
CT_DOCKAREA = 5
|
||||||
} type;
|
} type;
|
||||||
|
|
||||||
|
/** the workspace number, if this Con is of type CT_WORKSPACE and the
|
||||||
|
* workspace is not a named workspace (for named workspaces, num == -1) */
|
||||||
|
int num;
|
||||||
|
|
||||||
struct Con *parent;
|
struct Con *parent;
|
||||||
|
|
||||||
struct Rect rect;
|
struct Rect rect;
|
||||||
|
@ -472,10 +497,6 @@ struct Con {
|
||||||
|
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
/** the workspace number, if this Con is of type CT_WORKSPACE and the
|
|
||||||
* workspace is not a named workspace (for named workspaces, num == -1) */
|
|
||||||
int num;
|
|
||||||
|
|
||||||
/* a sticky-group is an identifier which bundles several containers to a
|
/* a sticky-group is an identifier which bundles several containers to a
|
||||||
* group. The contents are shared between all of them, that is they are
|
* group. The contents are shared between all of them, that is they are
|
||||||
* displayed on whichever of the containers is currently visible */
|
* displayed on whichever of the containers is currently visible */
|
||||||
|
@ -505,19 +526,9 @@ struct Con {
|
||||||
|
|
||||||
struct Window *window;
|
struct Window *window;
|
||||||
|
|
||||||
/* Should this container be marked urgent? This gets set when the window
|
|
||||||
* inside this container (if any) sets the urgency hint, for example. */
|
|
||||||
bool urgent;
|
|
||||||
|
|
||||||
/* timer used for disabling urgency */
|
/* timer used for disabling urgency */
|
||||||
struct ev_timer *urgency_timer;
|
struct ev_timer *urgency_timer;
|
||||||
|
|
||||||
/* ids/pixmap/graphics context for the frame window */
|
|
||||||
xcb_window_t frame;
|
|
||||||
xcb_pixmap_t pixmap;
|
|
||||||
xcb_gcontext_t pm_gc;
|
|
||||||
bool pixmap_recreated;
|
|
||||||
|
|
||||||
/** Cache for the decoration rendering */
|
/** Cache for the decoration rendering */
|
||||||
struct deco_render_params *deco_render_params;
|
struct deco_render_params *deco_render_params;
|
||||||
|
|
||||||
|
@ -559,13 +570,6 @@ struct Con {
|
||||||
FLOATING_USER_ON = 3
|
FLOATING_USER_ON = 3
|
||||||
} floating;
|
} floating;
|
||||||
|
|
||||||
/** This counter contains the number of UnmapNotify events for this
|
|
||||||
* container (or, more precisely, for its ->frame) which should be ignored.
|
|
||||||
* UnmapNotify events need to be ignored when they are caused by i3 itself,
|
|
||||||
* for example when reparenting or when unmapping the window on a workspace
|
|
||||||
* change. */
|
|
||||||
uint8_t ignore_unmap;
|
|
||||||
|
|
||||||
TAILQ_ENTRY(Con) nodes;
|
TAILQ_ENTRY(Con) nodes;
|
||||||
TAILQ_ENTRY(Con) focused;
|
TAILQ_ENTRY(Con) focused;
|
||||||
TAILQ_ENTRY(Con) all_cons;
|
TAILQ_ENTRY(Con) all_cons;
|
||||||
|
|
Loading…
Reference in New Issue