aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--android/android-device.c20
-rw-r--r--android/avd/info.c9
-rw-r--r--android/avd/info.h9
-rw-r--r--android/main.c2
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);