forked from enlightenment/efl
elocation: Cleanup status code handling
The code is an integer enum so we should really handle it like this. Use dummy free callbacks for ecore_event_add as we pass not malloced data in.
This commit is contained in:
parent
699e5a2bed
commit
510773a99d
|
@ -34,7 +34,7 @@ static Elocation_Position *position = NULL;
|
|||
static Elocation_Address *addr_geocode = NULL;
|
||||
static Elocation_Position *pos_geocode = NULL;
|
||||
static Elocation_Velocity *velocity = NULL;
|
||||
static int *status = -1; /* 0 is a valid status code */
|
||||
static int status = -1; /* 0 is a valid status code */
|
||||
static char nmea_sentence[256];
|
||||
|
||||
int _elocation_log_dom = -1;
|
||||
|
@ -740,35 +740,29 @@ status_cb(void *data EINA_UNUSED, const Eldbus_Message *reply, Eldbus_Pending *p
|
|||
return;
|
||||
}
|
||||
|
||||
/* We need this to be malloced to be passed to ecore_event_add. Or provide a dummy free callback. */
|
||||
status = malloc(sizeof(*status));
|
||||
|
||||
if (!eldbus_message_arguments_get(reply,"i", status))
|
||||
if (!eldbus_message_arguments_get(reply,"i", &status))
|
||||
{
|
||||
ERR("Error: Unable to unmarshall status");
|
||||
return;
|
||||
}
|
||||
|
||||
address_provider->status = position_provider->status = *status;
|
||||
address_provider->status = position_provider->status = status;
|
||||
/* Send out an event to all interested parties that we have an update */
|
||||
ecore_event_add(ELOCATION_EVENT_STATUS, status, NULL, NULL);
|
||||
ecore_event_add(ELOCATION_EVENT_STATUS, &status, _dummy_free, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
status_signal_cb(void *data EINA_UNUSED, const Eldbus_Message *reply)
|
||||
{
|
||||
/* We need this to be malloced to be passed to ecore_event_add. Or provide a dummy free callback. */
|
||||
status = malloc(sizeof(*status));
|
||||
|
||||
if (!eldbus_message_arguments_get(reply,"i", status))
|
||||
if (!eldbus_message_arguments_get(reply,"i", &status))
|
||||
{
|
||||
ERR("Error: Unable to unmarshall status");
|
||||
return;
|
||||
}
|
||||
|
||||
address_provider->status = position_provider->status = *status;
|
||||
address_provider->status = position_provider->status = status;
|
||||
/* Send out an event to all interested parties that we have an update */
|
||||
ecore_event_add(ELOCATION_EVENT_STATUS, status, NULL, NULL);
|
||||
ecore_event_add(ELOCATION_EVENT_STATUS, &status, _dummy_free, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1133,7 +1127,7 @@ elocation_status_get(int *status_shadow)
|
|||
{
|
||||
if (status < 0) return EINA_FALSE;
|
||||
|
||||
status_shadow = status;
|
||||
status_shadow = &status;
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue