diff options
-rw-r--r-- | android/android-device.c | 20 | ||||
-rw-r--r-- | android/avd/info.c | 9 | ||||
-rw-r--r-- | android/avd/info.h | 9 | ||||
-rw-r--r-- | android/main.c | 2 |
4 files changed, 39 insertions, 1 deletions
diff --git a/android/android-device.c b/android/android-device.c index 498e304..e91185d 100644 --- a/android/android-device.c +++ b/android/android-device.c @@ -389,6 +389,14 @@ _android_dev_socket_destroy(AndroidDevSocket* ads) memset(&ads->address, 0, sizeof(ads->address)); } +/* Event socket's asynchronous I/O looper callback. + * Param: + * opaque - AndroidEventSocket instance. + * fd - Socket's FD. + * events - I/O type bitsmask (read | write). + */ +static void _on_event_socket_io(void* opaque, int fd, unsigned events); + static int _android_dev_socket_connect(AndroidDevSocket* ads) { @@ -403,6 +411,14 @@ _android_dev_socket_connect(AndroidDevSocket* ads) } socket_set_nonblock(ads->fd); + /* XXX: A quick fix for event channel init. Redo this later. */ + if (ads->type == ADS_TYPE_EVENT) { + AndroidEventSocket* adsevent = (AndroidEventSocket*)ads; + /* Prepare for async I/O on the event socket. */ + loopIo_init(adsevent->io, adsevent->dev_socket.ad->looper, ads->fd, + _on_event_socket_io, adsevent); + } + /* Synchronously connect to it. */ ads->socket_status = ADS_CONNECTING; iolooper_add_write(_ads_io_looper(ads), ads->fd); @@ -952,11 +968,14 @@ _android_event_socket_connect_sync(AndroidEventSocket* adsevent) { AndroidDevSocket* ads = &adsevent->dev_socket; const int res = _android_dev_socket_connect(&adsevent->dev_socket); + /* XXX: This is patch-fixed in _android_dev_socket_connect */ +#if 0 if (res == 0) { /* Prepare for async I/O on the event socket. */ loopIo_init(adsevent->io, _aes_looper(adsevent), ads->fd, _on_event_socket_io, adsevent); } +#endif return res; } @@ -1208,6 +1227,7 @@ _on_event_socket_connected(AndroidEventSocket* adsevent, int failure) /* Complete event socket connection by identifying it as "event" socket with * the application. */ + ads->socket_status = ADS_CONNECTED; res = _android_dev_socket_register(ads); if (res) { diff --git a/android/avd/info.c b/android/avd/info.c index 7fd8cc4..f850f5b 100644 --- a/android/avd/info.c +++ b/android/avd/info.c @@ -1207,3 +1207,12 @@ int avdInfo_getAdbdCommunicationMode( AvdInfo* i ) { return path_getAdbdCommunicationMode(i->androidOut); } + +int avdInfo_getSnapshotPresent(AvdInfo* i) +{ + if (i->configIni == NULL) { + return 0; + } else { + return iniFile_getBoolean(i->configIni, "snapshot.present", "no"); + } +} diff --git a/android/avd/info.h b/android/avd/info.h index 74a9b01..11f4897 100644 --- a/android/avd/info.h +++ b/android/avd/info.h @@ -252,6 +252,15 @@ const char* avdInfo_getCoreHwIniPath( AvdInfo* i ); */ int avdInfo_getAdbdCommunicationMode( AvdInfo* i ); +/* Returns config.ini snapshot presense status. + * This routine checks if snapshots are enabled in AVD config.ini file. + * Return: + * 1 - Snapshots are enabled in AVD config.ini file. + * 0 - Snapshots are disabled in AVD config.ini file, of config.ini file is not + * found. +*/ +int avdInfo_getSnapshotPresent(AvdInfo* i); + /* */ #endif /* ANDROID_AVD_INFO_H */ diff --git a/android/main.c b/android/main.c index 6ce18e2..5aaf65e 100644 --- a/android/main.c +++ b/android/main.c @@ -853,7 +853,7 @@ int main(int argc, char **argv) } else { - if (!opts->snapstorage) { + if (!opts->snapstorage && avdInfo_getSnapshotPresent(avd)) { opts->snapstorage = avdInfo_getSnapStoragePath(avd); if (opts->snapstorage != NULL) { D("autoconfig: -snapstorage %s", opts->snapstorage); |