forked from enlightenment/enlightenment
Plug cursor leak in new XCursor support, only impacts those additions.
Plug a pre-existing key_grab leak. e17 was leaving passive grabs in the server and not releasing them. Looks like a bug in the new config parts. Kevin Brosius <cobra@compuserve.com> SVN revision: 6755
This commit is contained in:
parent
813f640d06
commit
78dbd1acf9
|
@ -311,6 +311,15 @@ e_config_behavior_changed(E_Observer * observer, E_Observee * observee,
|
||||||
|
|
||||||
if (config_data)
|
if (config_data)
|
||||||
{
|
{
|
||||||
|
for (l = config_data->actions; l; l = l->next)
|
||||||
|
{
|
||||||
|
E_Action *a;
|
||||||
|
|
||||||
|
a = l->data;
|
||||||
|
e_object_unref((E_Object *)a);
|
||||||
|
l->data = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
e_data_free(cfg_config, (char *)config_data);
|
e_data_free(cfg_config, (char *)config_data);
|
||||||
FREE(config_data);
|
FREE(config_data);
|
||||||
}
|
}
|
||||||
|
|
|
@ -296,10 +296,23 @@ e_cursors_display_in_window(Window win, char *type)
|
||||||
|
|
||||||
if (c)
|
if (c)
|
||||||
{
|
{
|
||||||
c->cursor =
|
/* If behavior.db has /desktops/cursors/native == 1, then use */
|
||||||
ecore_cursor_new(pmap, mask, hx, hy, fr, fg, fb, br, bg, bb);
|
/* images installed */
|
||||||
ecore_pixmap_free(pmap);
|
/* by E, else use X cursors by cursorfont id. */
|
||||||
ecore_pixmap_free(mask);
|
/* Use E's pixmap? */
|
||||||
|
if(config_data->desktops->e_native_cursors)
|
||||||
|
{
|
||||||
|
c->cursor =
|
||||||
|
ecore_cursor_new(pmap, mask, hx, hy, fr, fg, fb, br, bg, bb);
|
||||||
|
ecore_pixmap_free(pmap);
|
||||||
|
ecore_pixmap_free(mask);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* No, use X cursors */
|
||||||
|
c->cursor =
|
||||||
|
XCreateFontCursor(ecore_display_get(), c->x_cursor_id);
|
||||||
|
}
|
||||||
cursors = evas_list_append(cursors, c);
|
cursors = evas_list_append(cursors, c);
|
||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -308,17 +321,7 @@ e_cursors_display_in_window(Window win, char *type)
|
||||||
}
|
}
|
||||||
if (c)
|
if (c)
|
||||||
{
|
{
|
||||||
/* If behavior.db has /desktops/cursors/native == 1, then use */
|
ecore_cursor_set(win, c->cursor);
|
||||||
/* images installed */
|
|
||||||
/* by E, else use X cursors by cursorfont id. */
|
|
||||||
if(config_data->desktops->e_native_cursors)
|
|
||||||
ecore_cursor_set(win, c->cursor);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Cursor x_cursor;
|
|
||||||
x_cursor = XCreateFontCursor(ecore_display_get(), c->x_cursor_id);
|
|
||||||
ecore_cursor_set(win, x_cursor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -189,8 +189,11 @@ e_data_free(E_Data_Base_Type * type, char *data)
|
||||||
|
|
||||||
data2 = l2->data;
|
data2 = l2->data;
|
||||||
l2 = evas_list_remove(l2, data2);
|
l2 = evas_list_remove(l2, data2);
|
||||||
e_data_free(node->sub_type, (char *)data2);
|
if(data2)
|
||||||
FREE(data2);
|
{
|
||||||
|
e_data_free(node->sub_type, (char *)data2);
|
||||||
|
FREE(data2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue