diff options
| author | Brett Chabot <brettchabot@android.com> | 2011-05-03 16:04:17 -0700 |
|---|---|---|
| committer | Android Code Review <code-review@android.com> | 2011-05-03 16:04:17 -0700 |
| commit | dee444f860076b07d4b751fa64aba6683b4c377d (patch) | |
| tree | f307db5ce599e36fe11539444b39a34b66f7c4b5 | |
| parent | 20a2d5c22df9da1909c01140253300f0f553252e (diff) | |
| parent | 35425faccd6c6591c787f69dfb8e845720ca15ac (diff) | |
| download | platform_sdk-gingerbread-mr4-release.tar.gz platform_sdk-gingerbread-mr4-release.tar.bz2 platform_sdk-gingerbread-mr4-release.zip | |
Merge "Merge "Fix emulator GPS support"" into tools_r7android-cts-2.3_r12android-cts-2.3_r11android-cts-2.3_r10android-2.3.7_r1android-2.3.6_r1android-2.3.6_r0.9android-2.3.5_r1tools_r7gingerbread-releasegingerbread-mr4-release
| -rw-r--r-- | emulator/gps/gps_qemu.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/emulator/gps/gps_qemu.c b/emulator/gps/gps_qemu.c index ce14fcb9b..a4699d3ee 100644 --- a/emulator/gps/gps_qemu.c +++ b/emulator/gps/gps_qemu.c @@ -660,7 +660,7 @@ epoll_deregister( int epoll_fd, int fd ) * when started, messages from the QEMU GPS daemon. these are simple NMEA sentences * that must be parsed to be converted into GPS fixes sent to the framework */ -static void* +static void gps_state_thread( void* arg ) { GpsState* state = (GpsState*) arg; @@ -693,7 +693,7 @@ gps_state_thread( void* arg ) for (ne = 0; ne < nevents; ne++) { if ((events[ne].events & (EPOLLERR|EPOLLHUP)) != 0) { LOGE("EPOLLERR or EPOLLHUP after epoll_wait() !?"); - goto Exit; + return; } if ((events[ne].events & EPOLLIN) != 0) { int fd = events[ne].data.fd; @@ -709,7 +709,7 @@ gps_state_thread( void* arg ) if (cmd == CMD_QUIT) { D("gps thread quitting on demand"); - goto Exit; + return; } else if (cmd == CMD_START) { if (!started) { @@ -754,13 +754,11 @@ gps_state_thread( void* arg ) } } } -Exit: - return NULL; } static void -gps_state_init( GpsState* state ) +gps_state_init( GpsState* state, GpsCallbacks* callbacks ) { state->init = 1; state->control[0] = -1; @@ -781,11 +779,15 @@ gps_state_init( GpsState* state ) goto Fail; } - if ( pthread_create( &state->thread, NULL, gps_state_thread, state ) != 0 ) { + state->thread = callbacks->create_thread_cb( "gps_state_thread", gps_state_thread, state ); + + if ( !state->thread ) { LOGE("could not create gps thread: %s", strerror(errno)); goto Fail; } + state->callbacks = *callbacks; + D("gps state initialized"); return; @@ -809,13 +811,11 @@ qemu_gps_init(GpsCallbacks* callbacks) GpsState* s = _gps_state; if (!s->init) - gps_state_init(s); + gps_state_init(s, callbacks); if (s->fd < 0) return -1; - s->callbacks = *callbacks; - return 0; } |
