diff options
author | hyunuktak <hyunuk.tak@samsung.com> | 2015-08-07 17:11:34 +0900 |
---|---|---|
committer | hyunuktak <hyunuk.tak@samsung.com> | 2015-08-07 17:11:56 +0900 |
commit | 6aa4055ef0544ae85457c25c510fe3db04949c43 (patch) | |
tree | 94018be3cef92c33b60650c488dc15536c8f978a /src/rfkill.c | |
parent | bc55a3df0d4d2d97964ce2fadc9fe3ffc4953f4e (diff) | |
download | connman-6aa4055ef0544ae85457c25c510fe3db04949c43.tar.gz connman-6aa4055ef0544ae85457c25c510fe3db04949c43.tar.bz2 connman-6aa4055ef0544ae85457c25c510fe3db04949c43.zip |
Base Code merged to SPIN 2.4submit/tizen/20150810.034432
Signed-off-by: hyunuktak <hyunuk.tak@samsung.com>
Change-Id: I84a42375b5c59739e4caca1f726699ea7647ef17
Diffstat (limited to 'src/rfkill.c')
-rwxr-xr-x[-rw-r--r--] | src/rfkill.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/src/rfkill.c b/src/rfkill.c index 43be17e8..20908d71 100644..100755 --- a/src/rfkill.c +++ b/src/rfkill.c @@ -155,7 +155,7 @@ static gboolean rfkill_event(GIOChannel *chan, GIOCondition cond, gpointer data) return TRUE; } -static GIOChannel *channel = NULL; +static guint watch = 0; int __connman_rfkill_block(enum connman_service_type type, bool block) { @@ -179,7 +179,7 @@ int __connman_rfkill_block(enum connman_service_type type, bool block) fd = open("/dev/rfkill", O_RDWR | O_CLOEXEC); if (fd < 0) - return fd; + return -errno; memset(&event, 0, sizeof(event)); event.op = RFKILL_OP_CHANGE_ALL; @@ -188,10 +188,9 @@ int __connman_rfkill_block(enum connman_service_type type, bool block) len = write(fd, &event, sizeof(event)); if (len < 0) { + err = -errno; connman_error("Failed to change RFKILL state"); - err = len; - } else - err = 0; + } close(fd); @@ -201,6 +200,7 @@ int __connman_rfkill_block(enum connman_service_type type, bool block) int __connman_rfkill_init(void) { + GIOChannel *channel; GIOFlags flags; int fd; @@ -225,21 +225,21 @@ int __connman_rfkill_init(void) /* Process current RFKILL events sent on device open */ while (rfkill_process(channel) == G_IO_STATUS_NORMAL); - g_io_add_watch(channel, G_IO_IN | G_IO_NVAL | G_IO_HUP | G_IO_ERR, - rfkill_event, NULL); + watch = g_io_add_watch(channel, + G_IO_IN | G_IO_NVAL | G_IO_HUP | G_IO_ERR, + rfkill_event, NULL); - return 0; + g_io_channel_unref(channel); + + return watch ? 0 : -EIO; } void __connman_rfkill_cleanup(void) { DBG(""); - if (!channel) - return; - - g_io_channel_shutdown(channel, TRUE, NULL); - g_io_channel_unref(channel); - - channel = NULL; + if (watch) { + g_source_remove(watch); + watch = 0; + } } |