awesome: get rid of unecessary malloc in scan()
This commit is contained in:
parent
b0ab2d4193
commit
9e426be091
28
awesome.c
28
awesome.c
|
@ -90,12 +90,9 @@ scan(void)
|
||||||
{
|
{
|
||||||
int i, screen, real_screen, tree_c_len;
|
int i, screen, real_screen, tree_c_len;
|
||||||
const int screen_max = xcb_setup_roots_length(xcb_get_setup(globalconf.connection));
|
const int screen_max = xcb_setup_roots_length(xcb_get_setup(globalconf.connection));
|
||||||
root_win_t *root_wins = p_new(root_win_t, screen_max);
|
root_win_t root_wins[screen_max];
|
||||||
xcb_query_tree_reply_t *tree_r;
|
xcb_query_tree_reply_t *tree_r;
|
||||||
xcb_window_t *wins = NULL;
|
xcb_window_t *wins = NULL;
|
||||||
xcb_get_window_attributes_cookie_t *attr_wins = NULL;
|
|
||||||
xcb_get_property_cookie_t *state_wins = NULL;
|
|
||||||
xcb_get_geometry_cookie_t **geom_wins = NULL;
|
|
||||||
xcb_get_window_attributes_reply_t *attr_r;
|
xcb_get_window_attributes_reply_t *attr_r;
|
||||||
xcb_get_geometry_reply_t *geom_r;
|
xcb_get_geometry_reply_t *geom_r;
|
||||||
long state;
|
long state;
|
||||||
|
@ -122,9 +119,10 @@ scan(void)
|
||||||
/* Get the tree of the children windows of the current root window */
|
/* Get the tree of the children windows of the current root window */
|
||||||
if(!(wins = xcb_query_tree_children(tree_r)))
|
if(!(wins = xcb_query_tree_children(tree_r)))
|
||||||
fatal("E: cannot get tree children");
|
fatal("E: cannot get tree children");
|
||||||
|
|
||||||
tree_c_len = xcb_query_tree_children_length(tree_r);
|
tree_c_len = xcb_query_tree_children_length(tree_r);
|
||||||
attr_wins = p_new(xcb_get_window_attributes_cookie_t, tree_c_len);
|
xcb_get_window_attributes_cookie_t attr_wins[tree_c_len];
|
||||||
state_wins = p_new(xcb_get_property_cookie_t, tree_c_len);
|
xcb_get_property_cookie_t state_wins[tree_c_len];
|
||||||
|
|
||||||
for(i = 0; i < tree_c_len; i++)
|
for(i = 0; i < tree_c_len; i++)
|
||||||
{
|
{
|
||||||
|
@ -134,7 +132,7 @@ scan(void)
|
||||||
state_wins[i] = window_state_get_unchecked(wins[i]);
|
state_wins[i] = window_state_get_unchecked(wins[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
geom_wins = p_new(xcb_get_geometry_cookie_t *, tree_c_len);
|
xcb_get_geometry_cookie_t *geom_wins[tree_c_len];
|
||||||
|
|
||||||
for(i = 0; i < tree_c_len; i++)
|
for(i = 0; i < tree_c_len; i++)
|
||||||
{
|
{
|
||||||
|
@ -153,6 +151,7 @@ scan(void)
|
||||||
|| (attr_r->map_state != XCB_MAP_STATE_VIEWABLE && !has_awesome_prop)
|
|| (attr_r->map_state != XCB_MAP_STATE_VIEWABLE && !has_awesome_prop)
|
||||||
|| (state == XCB_WM_WITHDRAWN_STATE && !has_awesome_prop))
|
|| (state == XCB_WM_WITHDRAWN_STATE && !has_awesome_prop))
|
||||||
{
|
{
|
||||||
|
geom_wins[i] = NULL;
|
||||||
p_delete(&attr_r);
|
p_delete(&attr_r);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -160,20 +159,14 @@ scan(void)
|
||||||
p_delete(&attr_r);
|
p_delete(&attr_r);
|
||||||
|
|
||||||
/* Get the geometry of the current window */
|
/* Get the geometry of the current window */
|
||||||
geom_wins[i] = p_new(xcb_get_geometry_cookie_t, 1);
|
geom_wins[i] = p_alloca(xcb_get_geometry_cookie_t, 1);
|
||||||
*(geom_wins[i]) = xcb_get_geometry_unchecked(globalconf.connection, wins[i]);
|
*(geom_wins[i]) = xcb_get_geometry_unchecked(globalconf.connection, wins[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
p_delete(&state_wins);
|
|
||||||
p_delete(&attr_wins);
|
|
||||||
|
|
||||||
for(i = 0; i < tree_c_len; i++)
|
for(i = 0; i < tree_c_len; i++)
|
||||||
{
|
{
|
||||||
if(!geom_wins[i])
|
if(!geom_wins[i] || !(geom_r = xcb_get_geometry_reply(globalconf.connection,
|
||||||
continue;
|
*(geom_wins[i]), NULL)))
|
||||||
|
|
||||||
if(!(geom_r = xcb_get_geometry_reply(globalconf.connection,
|
|
||||||
*(geom_wins[i]), NULL)))
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
real_screen = screen_get_bycoord(globalconf.screens_info, screen,
|
real_screen = screen_get_bycoord(globalconf.screens_info, screen,
|
||||||
|
@ -182,13 +175,10 @@ scan(void)
|
||||||
client_manage(wins[i], geom_r, real_screen);
|
client_manage(wins[i], geom_r, real_screen);
|
||||||
|
|
||||||
p_delete(&geom_r);
|
p_delete(&geom_r);
|
||||||
p_delete(&geom_wins[i]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
p_delete(&geom_wins);
|
|
||||||
p_delete(&tree_r);
|
p_delete(&tree_r);
|
||||||
}
|
}
|
||||||
p_delete(&root_wins);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue