diff --git a/app/src/scrcpy.c b/app/src/scrcpy.c index 43ed428e..9e14d3c6 100644 --- a/app/src/scrcpy.c +++ b/app/src/scrcpy.c @@ -262,6 +262,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; @@ -310,7 +328,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 44a0df35..6e42f858 100644 --- a/app/src/server.c +++ b/app/src/server.c @@ -390,7 +390,8 @@ connect_to_server(struct server *server, uint32_t attempts, sc_tick 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"); @@ -432,6 +433,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 43d61679..c60af91e 100644 --- a/app/src/server.h +++ b/app/src/server.h @@ -60,11 +60,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