Initialize server struct dynamically
This will allow to add mutex/cond fields.
This commit is contained in:
parent
90f8356630
commit
83910d3b9c
3 changed files with 41 additions and 34 deletions
|
@ -34,7 +34,7 @@
|
||||||
#include "util/log.h"
|
#include "util/log.h"
|
||||||
#include "util/net.h"
|
#include "util/net.h"
|
||||||
|
|
||||||
static struct server server = SERVER_INITIALIZER;
|
static struct server server;
|
||||||
static struct screen screen = SCREEN_INITIALIZER;
|
static struct screen screen = SCREEN_INITIALIZER;
|
||||||
static struct fps_counter fps_counter;
|
static struct fps_counter fps_counter;
|
||||||
static struct video_buffer video_buffer;
|
static struct video_buffer video_buffer;
|
||||||
|
@ -304,6 +304,19 @@ av_log_callback(void *avcl, int level, const char *fmt, va_list vl) {
|
||||||
|
|
||||||
bool
|
bool
|
||||||
scrcpy(const struct scrcpy_options *options) {
|
scrcpy(const struct scrcpy_options *options) {
|
||||||
|
if (!server_init(&server)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool server_started = false;
|
||||||
|
bool fps_counter_initialized = false;
|
||||||
|
bool video_buffer_initialized = false;
|
||||||
|
bool file_handler_initialized = false;
|
||||||
|
bool recorder_initialized = false;
|
||||||
|
bool stream_started = false;
|
||||||
|
bool controller_initialized = false;
|
||||||
|
bool controller_started = false;
|
||||||
|
|
||||||
bool record = !!options->record_filename;
|
bool record = !!options->record_filename;
|
||||||
struct server_params params = {
|
struct server_params params = {
|
||||||
.log_level = options->log_level,
|
.log_level = options->log_level,
|
||||||
|
@ -322,18 +335,10 @@ scrcpy(const struct scrcpy_options *options) {
|
||||||
.force_adb_forward = options->force_adb_forward,
|
.force_adb_forward = options->force_adb_forward,
|
||||||
};
|
};
|
||||||
if (!server_start(&server, options->serial, ¶ms)) {
|
if (!server_start(&server, options->serial, ¶ms)) {
|
||||||
return false;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ret = false;
|
server_started = true;
|
||||||
|
|
||||||
bool fps_counter_initialized = false;
|
|
||||||
bool video_buffer_initialized = false;
|
|
||||||
bool file_handler_initialized = false;
|
|
||||||
bool recorder_initialized = false;
|
|
||||||
bool stream_started = false;
|
|
||||||
bool controller_initialized = false;
|
|
||||||
bool controller_started = false;
|
|
||||||
|
|
||||||
if (!sdl_init_and_configure(options->display, options->render_driver,
|
if (!sdl_init_and_configure(options->display, options->render_driver,
|
||||||
options->disable_screensaver)) {
|
options->disable_screensaver)) {
|
||||||
|
@ -444,7 +449,7 @@ scrcpy(const struct scrcpy_options *options) {
|
||||||
|
|
||||||
input_manager_init(&input_manager, options);
|
input_manager_init(&input_manager, options);
|
||||||
|
|
||||||
ret = event_loop(options);
|
bool ret = event_loop(options);
|
||||||
LOGD("quit...");
|
LOGD("quit...");
|
||||||
|
|
||||||
screen_destroy(&screen);
|
screen_destroy(&screen);
|
||||||
|
@ -465,8 +470,10 @@ end:
|
||||||
fps_counter_interrupt(&fps_counter);
|
fps_counter_interrupt(&fps_counter);
|
||||||
}
|
}
|
||||||
|
|
||||||
// shutdown the sockets and kill the server
|
if (server_started) {
|
||||||
server_stop(&server);
|
// shutdown the sockets and kill the server
|
||||||
|
server_stop(&server);
|
||||||
|
}
|
||||||
|
|
||||||
// now that the sockets are shutdown, the stream and controller are
|
// now that the sockets are shutdown, the stream and controller are
|
||||||
// interrupted, we can join them
|
// interrupted, we can join them
|
||||||
|
|
|
@ -353,9 +353,26 @@ close_socket(socket_t socket) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
bool
|
||||||
server_init(struct server *server) {
|
server_init(struct server *server) {
|
||||||
*server = (struct server) SERVER_INITIALIZER;
|
server->serial = NULL;
|
||||||
|
server->process = PROCESS_NONE;
|
||||||
|
server->wait_server_thread = NULL;
|
||||||
|
atomic_flag_clear_explicit(&server->server_socket_closed,
|
||||||
|
memory_order_relaxed);
|
||||||
|
|
||||||
|
server->server_socket = INVALID_SOCKET;
|
||||||
|
server->video_socket = INVALID_SOCKET;
|
||||||
|
server->control_socket = INVALID_SOCKET;
|
||||||
|
|
||||||
|
server->port_range.first = 0;
|
||||||
|
server->port_range.last = 0;
|
||||||
|
server->local_port = 0;
|
||||||
|
|
||||||
|
server->tunnel_enabled = false;
|
||||||
|
server->tunnel_forward = false;
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -27,23 +27,6 @@ struct server {
|
||||||
bool tunnel_forward; // use "adb forward" instead of "adb reverse"
|
bool tunnel_forward; // use "adb forward" instead of "adb reverse"
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SERVER_INITIALIZER { \
|
|
||||||
.serial = NULL, \
|
|
||||||
.process = PROCESS_NONE, \
|
|
||||||
.wait_server_thread = NULL, \
|
|
||||||
.server_socket_closed = ATOMIC_FLAG_INIT, \
|
|
||||||
.server_socket = INVALID_SOCKET, \
|
|
||||||
.video_socket = INVALID_SOCKET, \
|
|
||||||
.control_socket = INVALID_SOCKET, \
|
|
||||||
.port_range = { \
|
|
||||||
.first = 0, \
|
|
||||||
.last = 0, \
|
|
||||||
}, \
|
|
||||||
.local_port = 0, \
|
|
||||||
.tunnel_enabled = false, \
|
|
||||||
.tunnel_forward = false, \
|
|
||||||
}
|
|
||||||
|
|
||||||
struct server_params {
|
struct server_params {
|
||||||
enum sc_log_level log_level;
|
enum sc_log_level log_level;
|
||||||
const char *crop;
|
const char *crop;
|
||||||
|
@ -62,7 +45,7 @@ struct server_params {
|
||||||
};
|
};
|
||||||
|
|
||||||
// init default values
|
// init default values
|
||||||
void
|
bool
|
||||||
server_init(struct server *server);
|
server_init(struct server *server);
|
||||||
|
|
||||||
// push, enable tunnel et start the server
|
// push, enable tunnel et start the server
|
||||||
|
|
Loading…
Reference in a new issue