diff options
Diffstat (limited to 'android/console.c')
-rw-r--r-- | android/console.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/android/console.c b/android/console.c index e797d9e..d776a5c 100644 --- a/android/console.c +++ b/android/console.c @@ -56,6 +56,7 @@ #include "android/protocol/ui-commands-api.h" #include "android/protocol/core-commands-impl.h" #include "android/protocol/ui-commands-proxy.h" +#include "android/protocol/attach-ui-proxy.h" #if defined(CONFIG_SLIRP) #include "libslirp.h" @@ -134,9 +135,6 @@ ControlClient ui_core_ctl_client = NULL; /* UI control service client (Core-> UI). */ ControlClient core_ui_ctl_client = NULL; - -/* UI control service (Core -> UI. */ -// CoreUICtl* core_ui_ctl = NULL; #endif // CONFIG_STANDALONE_CORE /* -android-avdname option value. Defined in vl-android.c */ @@ -243,6 +241,7 @@ control_client_destroy( ControlClient client ) #ifdef CONFIG_STANDALONE_CORE if (client == attached_ui_client) { + attachUiProxy_destroy(); attached_ui_client = NULL; } @@ -2503,20 +2502,29 @@ do_attach_ui( ControlClient client, char* args ) return -1; } - attached_ui_client = client; - - if (android_op_ui_settings != NULL) { - // Reply "OK" with the saved -ui-settings property. + if (!attachUiProxy_create(client->sock)) { char reply_buf[4096]; + attached_ui_client = client; + // Reply "OK" with the saved -ui-settings property. snprintf(reply_buf, sizeof(reply_buf), "OK: %s\r\n", android_op_ui_settings); control_write( client, reply_buf); } else { - control_write( client, "OK\r\n"); + control_write( client, "KO\r\n" ); + control_client_destroy(client); + return -1; } return 0; } +void +destroy_attach_ui_client(void) +{ + if (attached_ui_client != NULL) { + control_client_destroy(attached_ui_client); + } +} + /* Core display instance. */ extern CoreDisplay core_display; |