aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/elocation
diff options
context:
space:
mode:
authorStefan Schmidt <s.schmidt@samsung.com>2014-11-11 11:46:14 +0100
committerStefan Schmidt <s.schmidt@samsung.com>2014-11-11 11:46:14 +0100
commit510773a99df919d557323da057034a4cbca1a3f5 (patch)
tree716715e858f197d2f11a90ed7c1c6b29d3b86c90 /src/lib/elocation
parenttests/elocation: Enhance tests to wait for callback arrival. (diff)
downloadefl-510773a99df919d557323da057034a4cbca1a3f5.tar.gz
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.
Diffstat (limited to 'src/lib/elocation')
-rw-r--r--src/lib/elocation/elocation.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/src/lib/elocation/elocation.c b/src/lib/elocation/elocation.c
index 31065dc0ef..2b795261f4 100644
--- a/src/lib/elocation/elocation.c
+++ b/src/lib/elocation/elocation.c
@@ -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;
}