projects
/
platform
/
core
/
uifw
/
at-spi2-atk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Leakfixes from Padraig O'Briain for bug #361386 and bug #369377.
[platform/core/uifw/at-spi2-atk.git]
/
registryd
/
deviceeventcontroller.c
diff --git
a/registryd/deviceeventcontroller.c
b/registryd/deviceeventcontroller.c
index
95640d8
..
66cc323
100644
(file)
--- a/
registryd/deviceeventcontroller.c
+++ b/
registryd/deviceeventcontroller.c
@@
-221,7
+221,6
@@
spi_dec_replace_map_keysym (DEControllerPrivateData *priv, KeyCode keycode, KeyS
if (desc && desc->map)
{
gint offset = desc->map->key_sym_map[keycode].offset;
if (desc && desc->map)
{
gint offset = desc->map->key_sym_map[keycode].offset;
- long old_sym = desc->map->syms[offset];
desc->map->syms[offset] = keysym;
}
else
desc->map->syms[offset] = keysym;
}
else
@@
-446,7
+445,10
@@
spi_dec_button_update_and_emit (SpiDEController *controller,
e.source = BONOBO_OBJREF (controller->registry->desktop);
e.detail1 = last_mouse_pos->x;
e.detail2 = last_mouse_pos->y;
e.source = BONOBO_OBJREF (controller->registry->desktop);
e.detail1 = last_mouse_pos->x;
e.detail2 = last_mouse_pos->y;
- spi_init_any_nil (&e.any_data);
+ spi_init_any_nil (&e.any_data,
+ spi_accessible_new_return (atk_get_root (), FALSE, NULL),
+ Accessibility_ROLE_UNKNOWN,
+ "");
CORBA_exception_init (&ev);
if (!is_consumed)
{
CORBA_exception_init (&ev);
if (!is_consumed)
{
@@
-456,6
+458,8
@@
spi_dec_button_update_and_emit (SpiDEController *controller,
}
else
spi_dec_set_unlatch_pending (controller, mask_return);
}
else
spi_dec_set_unlatch_pending (controller, mask_return);
+
+ CORBA_free (e.any_data._value);
}
return TRUE;
}
}
return TRUE;
}
@@
-471,6
+475,7
@@
spi_dec_mouse_check (SpiDEController *controller,
int *x, int *y, gboolean *moved)
{
Accessibility_Event e;
int *x, int *y, gboolean *moved)
{
Accessibility_Event e;
+ Accessibility_EventDetails *details;
CORBA_Environment ev;
int win_x_return,win_y_return;
unsigned int mask_return;
CORBA_Environment ev;
int win_x_return,win_y_return;
unsigned int mask_return;
@@
-500,22
+505,32
@@
spi_dec_mouse_check (SpiDEController *controller,
e.source = BONOBO_OBJREF (controller->registry->desktop);
e.detail1 = *x;
e.detail2 = *y;
e.source = BONOBO_OBJREF (controller->registry->desktop);
e.detail1 = *x;
e.detail2 = *y;
- spi_init_any_nil (&e.any_data);
+ spi_init_any_nil (&e.any_data,
+ spi_accessible_new_return (atk_get_root (), FALSE, NULL),
+ Accessibility_ROLE_UNKNOWN,
+ "");
CORBA_exception_init (&ev);
Accessibility_Registry_notifyEvent (BONOBO_OBJREF (controller->registry),
&e,
&ev);
CORBA_exception_init (&ev);
Accessibility_Registry_notifyEvent (BONOBO_OBJREF (controller->registry),
&e,
&ev);
+ details = e.any_data._value;
+ CORBA_free (details);
e.type = "mouse:rel";
e.source = BONOBO_OBJREF (controller->registry->desktop);
e.detail1 = *x - last_mouse_pos->x;
e.detail2 = *y - last_mouse_pos->y;
e.type = "mouse:rel";
e.source = BONOBO_OBJREF (controller->registry->desktop);
e.detail1 = *x - last_mouse_pos->x;
e.detail2 = *y - last_mouse_pos->y;
- spi_init_any_nil (&e.any_data);
+ spi_init_any_nil (&e.any_data,
+ spi_accessible_new_return (atk_get_root (), FALSE, NULL),
+ Accessibility_ROLE_UNKNOWN,
+ "");
CORBA_exception_init (&ev);
last_mouse_pos->x = *x;
last_mouse_pos->y = *y;
Accessibility_Registry_notifyEvent (BONOBO_OBJREF (controller->registry),
&e,
&ev);
CORBA_exception_init (&ev);
last_mouse_pos->x = *x;
last_mouse_pos->y = *y;
Accessibility_Registry_notifyEvent (BONOBO_OBJREF (controller->registry),
&e,
&ev);
+ details = e.any_data._value;
+ CORBA_free (details);
*moved = True;
}
else
*moved = True;
}
else
@@
-548,11
+563,15
@@
spi_dec_emit_modifier_event (SpiDEController *controller, guint prev_mask,
e.source = BONOBO_OBJREF (controller->registry->desktop);
e.detail1 = prev_mask & key_modifier_mask;
e.detail2 = current_mask & key_modifier_mask;
e.source = BONOBO_OBJREF (controller->registry->desktop);
e.detail1 = prev_mask & key_modifier_mask;
e.detail2 = current_mask & key_modifier_mask;
- spi_init_any_nil (&e.any_data);
+ spi_init_any_nil (&e.any_data,
+ spi_accessible_new_return (atk_get_root (), FALSE, NULL),
+ Accessibility_ROLE_UNKNOWN,
+ "");
CORBA_exception_init (&ev);
Accessibility_Registry_notifyEvent (BONOBO_OBJREF (controller->registry),
&e,
&ev);
CORBA_exception_init (&ev);
Accessibility_Registry_notifyEvent (BONOBO_OBJREF (controller->registry),
&e,
&ev);
+ CORBA_free (e.any_data._value);
}
static gboolean
}
static gboolean
@@
-617,9
+636,12
@@
spi_dec_ungrab_mouse (gpointer data)
static void
spi_dec_init_mouse_listener (SpiRegistry *registry)
{
static void
spi_dec_init_mouse_listener (SpiRegistry *registry)
{
+#ifdef GRAB_BUTTON
Display *display = spi_get_display ();
Display *display = spi_get_display ();
+#endif
g_timeout_add (100, spi_dec_poll_mouse_idle, registry);
g_timeout_add (100, spi_dec_poll_mouse_idle, registry);
+#ifdef GRAB_BUTTON
if (display)
{
if (XGrabButton (display, AnyButton, AnyModifier,
if (display)
{
if (XGrabButton (display, AnyButton, AnyModifier,
@@
-636,6
+658,7
@@
spi_dec_init_mouse_listener (SpiRegistry *registry)
fprintf (stderr, "mouse buttons grabbed\n");
#endif
}
fprintf (stderr, "mouse buttons grabbed\n");
#endif
}
+#endif
}
/**
}
/**
@@
-918,8
+941,9
@@
spi_controller_notify_mouselisteners (SpiDEController *controlle
GSList *notify = NULL, *l2;
GList **listeners = &controller->mouse_listeners;
gboolean is_consumed;
GSList *notify = NULL, *l2;
GList **listeners = &controller->mouse_listeners;
gboolean is_consumed;
+#ifdef SPI_KEYEVENT_DEBUG
gboolean found = FALSE;
gboolean found = FALSE;
-
+#endif
if (!listeners)
{
return FALSE;
if (!listeners)
{
return FALSE;
@@
-938,7
+962,9
@@
spi_controller_notify_mouselisteners (SpiDEController *controlle
/* we clone (don't dup) the listener, to avoid refcount inc. */
notify = g_slist_prepend (notify,
spi_listener_clone (listener, ev));
/* we clone (don't dup) the listener, to avoid refcount inc. */
notify = g_slist_prepend (notify,
spi_listener_clone (listener, ev));
+#ifdef SPI_KEYEVENT_DEBUG
found = TRUE;
found = TRUE;
+#endif
}
}
}
}
}
}
@@
-1056,12
+1082,16
@@
spi_device_event_controller_forward_mouse_event (SpiDEController *controller,
e.source = BONOBO_OBJREF (controller->registry->desktop);
e.detail1 = last_mouse_pos->x;
e.detail2 = last_mouse_pos->y;
e.source = BONOBO_OBJREF (controller->registry->desktop);
e.detail1 = last_mouse_pos->x;
e.detail2 = last_mouse_pos->y;
- spi_init_any_nil (&e.any_data);
+ spi_init_any_nil (&e.any_data,
+ spi_accessible_new_return (atk_get_root (), FALSE, NULL),
+ Accessibility_ROLE_UNKNOWN,
+ "");
CORBA_exception_init (&ev);
Accessibility_Registry_notifyEvent (BONOBO_OBJREF (controller->registry),
&e,
&ev);
CORBA_exception_init (&ev);
Accessibility_Registry_notifyEvent (BONOBO_OBJREF (controller->registry),
&e,
&ev);
+ CORBA_free (e.any_data._value);
}
xkb_mod_unlatch_occurred = (xevent->type == ButtonPress ||
}
xkb_mod_unlatch_occurred = (xevent->type == ButtonPress ||
@@
-1405,7
+1435,7
@@
spi_key_event_matches_listener (const Accessibility_DeviceEvent *key_event,
static gboolean
spi_controller_notify_keylisteners (SpiDEController *controller,
static gboolean
spi_controller_notify_keylisteners (SpiDEController *controller,
-
const Accessibility_DeviceEvent
*key_event,
+
Accessibility_DeviceEvent
*key_event,
CORBA_boolean is_system_global,
CORBA_Environment *ev)
{
CORBA_boolean is_system_global,
CORBA_Environment *ev)
{
@@
-1419,6
+1449,10
@@
spi_controller_notify_keylisteners (SpiDEController *controller,
return FALSE;
}
return FALSE;
}
+ /* set the NUMLOCK event mask bit if appropriate: see bug #143702 */
+ if (key_event->modifiers & _numlock_physical_mask)
+ key_event->modifiers |= SPI_KEYMASK_NUMLOCK;
+
for (l = *key_listeners; l; l = l->next)
{
DEControllerKeyListener *key_listener = l->data;
for (l = *key_listeners; l; l = l->next)
{
DEControllerKeyListener *key_listener = l->data;
@@
-1449,7
+1483,8
@@
spi_controller_notify_keylisteners (SpiDEController *controller,
DEControllerKeyListener *key_listener = l2->data;
Accessibility_DeviceEventListener ls = key_listener->listener.object;
DEControllerKeyListener *key_listener = l2->data;
Accessibility_DeviceEventListener ls = key_listener->listener.object;
- is_consumed = Accessibility_DeviceEventListener_notifyEvent (ls, key_event, ev);
+ is_consumed = Accessibility_DeviceEventListener_notifyEvent (ls, key_event, ev) &&
+ key_listener->mode->preemptive;
if (BONOBO_EX (ev))
{
if (BONOBO_EX (ev))
{
@@
-1478,7
+1513,7
@@
spi_controller_notify_keylisteners (SpiDEController *controller,
}
static gboolean
}
static gboolean
-spi_clear_error_state ()
+spi_clear_error_state (
void
)
{
gboolean retval = spi_error_code != 0;
spi_error_code = 0;
{
gboolean retval = spi_error_code != 0;
spi_error_code = 0;
@@
-2217,7
+2252,6
@@
impl_generate_keyboard_event (PortableServer_Servant servant,
{
SpiDEController *controller =
SPI_DEVICE_EVENT_CONTROLLER (bonobo_object (servant));
{
SpiDEController *controller =
SPI_DEVICE_EVENT_CONTROLLER (bonobo_object (servant));
- long key_synth_code;
gint err;
KeySym keysym;
gint err;
KeySym keysym;
@@
-2233,7
+2267,6
@@
impl_generate_keyboard_event (PortableServer_Servant servant,
*/
gdk_error_trap_push ();
*/
gdk_error_trap_push ();
- key_synth_code = keycode;
switch (synth_type)
{
switch (synth_type)
{
@@
-2262,7
+2295,7
@@
impl_generate_keyboard_event (PortableServer_Servant servant,
keystring);
break;
}
keystring);
break;
}
- if (
err = gdk_error_trap_pop (
))
+ if (
(err = gdk_error_trap_pop ()
))
{
DBG (-1, g_warning ("Error [%d] emitting keystroke", err));
}
{
DBG (-1, g_warning ("Error [%d] emitting keystroke", err));
}
@@
-2357,7
+2390,9
@@
impl_notify_listeners_sync (PortableServer_Servant servant,
g_print ("notifylistening listeners synchronously: controller %p, event id %d\n",
controller, (int) event->id);
#endif
g_print ("notifylistening listeners synchronously: controller %p, event id %d\n",
controller, (int) event->id);
#endif
- return spi_controller_notify_keylisteners (controller, event, CORBA_FALSE, ev) ?
+ return spi_controller_notify_keylisteners (controller,
+ (Accessibility_DeviceEvent *)
+ event, CORBA_FALSE, ev) ?
CORBA_TRUE : CORBA_FALSE;
}
CORBA_TRUE : CORBA_FALSE;
}
@@
-2372,7
+2407,8
@@
impl_notify_listeners_async (PortableServer_Servant servant,
#ifdef SPI_DEBUG
fprintf (stderr, "notifying listeners asynchronously\n");
#endif
#ifdef SPI_DEBUG
fprintf (stderr, "notifying listeners asynchronously\n");
#endif
- spi_controller_notify_keylisteners (controller, event, CORBA_FALSE, ev);
+ spi_controller_notify_keylisteners (controller, (Accessibility_DeviceEvent *)
+ event, CORBA_FALSE, ev);
}
static void
}
static void
@@
-2482,6
+2518,7
@@
spi_device_event_controller_forward_key_event (SpiDEController *controller,
{
CORBA_Environment ev;
Accessibility_DeviceEvent key_event;
{
CORBA_Environment ev;
Accessibility_DeviceEvent key_event;
+ gboolean ret;
g_assert (event->type == KeyPress || event->type == KeyRelease);
g_assert (event->type == KeyPress || event->type == KeyRelease);
@@
-2493,7
+2530,9
@@
spi_device_event_controller_forward_key_event (SpiDEController *controller,
spi_controller_update_key_grabs (controller, &key_event);
/* relay to listeners, and decide whether to consume it or not */
spi_controller_update_key_grabs (controller, &key_event);
/* relay to listeners, and decide whether to consume it or not */
- return spi_controller_notify_keylisteners (controller, &key_event, CORBA_TRUE, &ev);
+ ret = spi_controller_notify_keylisteners (controller, &key_event, CORBA_TRUE, &ev);
+ CORBA_free(key_event.event_string);
+ return ret;
}
SpiDEController *
}
SpiDEController *
@@
-2515,7
+2554,6
@@
is_key_released (KeyCode code)
{
char keys[32];
int down;
{
char keys[32];
int down;
- int i;
XQueryKeymap (spi_get_display (), keys);
down = BIT (keys, code);
XQueryKeymap (spi_get_display (), keys);
down = BIT (keys, code);