forked from enlightenment/efl
ecore_cocoa: explicity allocate for keyname and key
Summary: Allocate memory for keyname and key. Also refactor unnecessary calloc and free. Reviewers: #committers, zmike, devilhorns Reviewed By: zmike Subscribers: cedric Tags: #efl Differential Revision: https://phab.enlightenment.org/D6366
This commit is contained in:
parent
8f95b17f39
commit
9d3b5079db
|
@ -258,29 +258,37 @@ _ecore_cocoa_feed_events(void *anEvent)
|
||||||
|
|
||||||
Ecore_Event_Key *evDown = NULL;
|
Ecore_Event_Key *evDown = NULL;
|
||||||
Ecore_Event_Key *evUp = NULL;
|
Ecore_Event_Key *evUp = NULL;
|
||||||
|
const char *key = NULL;
|
||||||
evDown = calloc(1, sizeof (Ecore_Event_Key));
|
int keylen;
|
||||||
if (!evDown) return pass;
|
|
||||||
|
|
||||||
// Turn special key flags on
|
// Turn special key flags on
|
||||||
if (flags & NSEventModifierFlagShift)
|
if (flags & NSEventModifierFlagShift)
|
||||||
evDown->key = "Shift_L";
|
key = "Shift_L";
|
||||||
else if (flags & NSEventModifierFlagControl)
|
else if (flags & NSEventModifierFlagControl)
|
||||||
evDown->key = "Control_L";
|
key = "Control_L";
|
||||||
else if (flags & NSEventModifierFlagOption)
|
else if (flags & NSEventModifierFlagOption)
|
||||||
evDown->key = "Alt_L";
|
key = "Alt_L";
|
||||||
else if (flags & NSEventModifierFlagCommand)
|
else if (flags & NSEventModifierFlagCommand)
|
||||||
evDown->key = "Super_L";
|
key = "Super_L";
|
||||||
else if (flags & NSEventModifierFlagCapsLock)
|
else if (flags & NSEventModifierFlagCapsLock)
|
||||||
evDown->key = "Caps_Lock";
|
key = "Caps_Lock";
|
||||||
else if (flags & NSEventModifierFlagNumericPad)
|
else if (flags & NSEventModifierFlagNumericPad)
|
||||||
evDown->key = "Num_Lock";
|
key = "Num_Lock";
|
||||||
|
|
||||||
if (evDown->key)
|
if (key)
|
||||||
{
|
{
|
||||||
|
keylen = strlen(key);
|
||||||
|
evDown = calloc(1, sizeof (Ecore_Event_Key) + (keylen * 2) + 2);
|
||||||
|
if (!evDown) return pass;
|
||||||
|
|
||||||
|
evDown->keyname = (char *)(evDown + 1);
|
||||||
|
evDown->key = evDown->keyname + keylen + 1;
|
||||||
|
|
||||||
|
strcpy((char *) evDown->keyname, key);
|
||||||
|
strcpy((char *) evDown->key, key);
|
||||||
|
|
||||||
evDown->window = (Ecore_Window)window.ecore_window_data;
|
evDown->window = (Ecore_Window)window.ecore_window_data;
|
||||||
evDown->event_window = evDown->window;
|
evDown->event_window = evDown->window;
|
||||||
evDown->keyname = evDown->key;
|
|
||||||
evDown->timestamp = time;
|
evDown->timestamp = time;
|
||||||
evDown->string = NULL;
|
evDown->string = NULL;
|
||||||
ecore_event_add(ECORE_EVENT_KEY_DOWN, evDown, NULL, NULL);
|
ecore_event_add(ECORE_EVENT_KEY_DOWN, evDown, NULL, NULL);
|
||||||
|
@ -288,42 +296,44 @@ _ecore_cocoa_feed_events(void *anEvent)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(evDown);
|
key = NULL;
|
||||||
|
|
||||||
evUp = calloc(1, sizeof (Ecore_Event_Key));
|
|
||||||
if (!evUp)
|
|
||||||
{
|
|
||||||
return pass;
|
|
||||||
}
|
|
||||||
|
|
||||||
NSUInteger changed_flags = flags ^ old_flags;
|
NSUInteger changed_flags = flags ^ old_flags;
|
||||||
|
|
||||||
// Turn special key flags off
|
// Turn special key flags off
|
||||||
if (changed_flags & NSEventModifierFlagShift)
|
if (changed_flags & NSEventModifierFlagShift)
|
||||||
evUp->key = "Shift_L";
|
key = "Shift_L";
|
||||||
else if (changed_flags & NSEventModifierFlagControl)
|
else if (changed_flags & NSEventModifierFlagControl)
|
||||||
evUp->key = "Control_L";
|
key = "Control_L";
|
||||||
else if (changed_flags & NSEventModifierFlagOption)
|
else if (changed_flags & NSEventModifierFlagOption)
|
||||||
evUp->key = "Alt_L";
|
key = "Alt_L";
|
||||||
else if (changed_flags & NSEventModifierFlagCommand)
|
else if (changed_flags & NSEventModifierFlagCommand)
|
||||||
evUp->key = "Super_L";
|
key = "Super_L";
|
||||||
else if (changed_flags & NSEventModifierFlagCapsLock)
|
else if (changed_flags & NSEventModifierFlagCapsLock)
|
||||||
evUp->key = "Caps_Lock";
|
key = "Caps_Lock";
|
||||||
else if (changed_flags & NSEventModifierFlagNumericPad)
|
else if (changed_flags & NSEventModifierFlagNumericPad)
|
||||||
evUp->key = "Num_Lock";
|
key = "Num_Lock";
|
||||||
|
|
||||||
if (evUp->key)
|
if (key)
|
||||||
{
|
{
|
||||||
|
keylen = strlen(key);
|
||||||
|
evUp = calloc(1, sizeof (Ecore_Event_Key) + (keylen * 2) + 2);
|
||||||
|
if (!evUp) return pass;
|
||||||
|
|
||||||
|
evUp->keyname = (char *)(evUp + 1);
|
||||||
|
evUp->key = evUp->keyname + keylen + 1;
|
||||||
|
|
||||||
|
strcpy((char *) evUp->keyname, key);
|
||||||
|
strcpy((char *) evUp->key, key);
|
||||||
|
|
||||||
evUp->window = (Ecore_Window)window.ecore_window_data;
|
evUp->window = (Ecore_Window)window.ecore_window_data;
|
||||||
evUp->event_window = evUp->window;
|
evUp->event_window = evUp->window;
|
||||||
evUp->keyname = evUp->key;
|
|
||||||
evUp->timestamp = time;
|
evUp->timestamp = time;
|
||||||
evUp->string = NULL;
|
evUp->string = NULL;
|
||||||
ecore_event_add(ECORE_EVENT_KEY_UP, evUp, NULL, NULL);
|
ecore_event_add(ECORE_EVENT_KEY_UP, evUp, NULL, NULL);
|
||||||
old_flags = flags;
|
old_flags = flags;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
free(evUp);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue