diff --git a/app/src/scrcpy.c b/app/src/scrcpy.c index 28401365..eeb78fb4 100644 --- a/app/src/scrcpy.c +++ b/app/src/scrcpy.c @@ -261,6 +261,24 @@ stream_on_eos(struct stream *stream, void *userdata) { PUSH_EVENT(EVENT_STREAM_STOPPED); } +static void +server_on_connection_failed(struct server *server, void *userdata) { + struct scrcpy *scrcpy = userdata; + +} + +static void +server_on_connected(struct server *server, void *userdata) { + struct scrcpy *scrcpy = userdata; + +} + +static void +server_on_disconnected(struct server *server, void *userdata) { + struct scrcpy *scrcpy = userdata; + +} + bool scrcpy(struct scrcpy_options *options) { static struct scrcpy scrcpy; @@ -302,7 +320,12 @@ scrcpy(struct scrcpy_options *options) { .power_off_on_close = options->power_off_on_close, }; - if (!server_init(&s->server, ¶ms)) { + static const struct server_callbacks cbs = { + .on_connection_failed = server_on_connection_failed, + .on_connected = server_on_connected, + .on_disconnected = server_on_disconnected, + }; + if (!server_init(&s->server, ¶ms, &cbs, s)) { return false; } diff --git a/app/src/server.c b/app/src/server.c index 77d15361..381a54c4 100644 --- a/app/src/server.c +++ b/app/src/server.c @@ -368,7 +368,8 @@ connect_to_server(uint16_t port, uint32_t attempts, uint32_t delay) { } bool -server_init(struct server *server, const struct server_params *params) { +server_init(struct server *server, const struct server_params *params, + const struct server_callbacks *cbs, void *cbs_userdata) { bool ok = server_params_copy(&server->params, params); if (!ok) { LOGE("Could not copy server params"); @@ -401,6 +402,9 @@ server_init(struct server *server, const struct server_params *params) { server->tunnel_enabled = false; server->tunnel_forward = false; + server->cbs = cbs; + server->cbs_userdata = cbs_userdata; + return true; } diff --git a/app/src/server.h b/app/src/server.h index 92a353df..a7e9c854 100644 --- a/app/src/server.h +++ b/app/src/server.h @@ -56,11 +56,21 @@ struct server { uint16_t local_port; // selected from port_range bool tunnel_enabled; bool tunnel_forward; // use "adb forward" instead of "adb reverse" + + const struct server_callbacks *cbs; + void *cbs_userdata; +}; + +struct server_callbacks { + void (*on_connection_failed)(struct server *server, void *userdata); + void (*on_connected)(struct server *server, void *userdata); + void (*on_disconnected)(struct server *server, void *userdata); }; // init the server with the given params bool -server_init(struct server *server, const struct server_params *params); +server_init(struct server *server, const struct server_params *params, + const struct server_callbacks *cbs, void *cbs_userdata); // push, enable tunnel et start the server bool