mirror of
https://github.com/Genymobile/scrcpy.git
synced 2026-04-21 01:33:36 +00:00
Initialize controller in two steps
There is a dependency cycle in the initialization order: - keyboard depends on controller - controller depends on acksync - acksync depends on keyboard initialization To break this cycle, bind the async instance to the controller in a second step.
This commit is contained in:
parent
ea96552751
commit
a96e222dab
5 changed files with 19 additions and 12 deletions
|
|
@ -7,8 +7,7 @@
|
|||
#define SC_CONTROL_MSG_QUEUE_MAX 64
|
||||
|
||||
bool
|
||||
sc_controller_init(struct sc_controller *controller, sc_socket control_socket,
|
||||
struct sc_acksync *acksync) {
|
||||
sc_controller_init(struct sc_controller *controller, sc_socket control_socket) {
|
||||
sc_vecdeque_init(&controller->queue);
|
||||
|
||||
bool ok = sc_vecdeque_reserve(&controller->queue, SC_CONTROL_MSG_QUEUE_MAX);
|
||||
|
|
@ -16,7 +15,7 @@ sc_controller_init(struct sc_controller *controller, sc_socket control_socket,
|
|||
return false;
|
||||
}
|
||||
|
||||
ok = sc_receiver_init(&controller->receiver, control_socket, acksync);
|
||||
ok = sc_receiver_init(&controller->receiver, control_socket);
|
||||
if (!ok) {
|
||||
sc_vecdeque_destroy(&controller->queue);
|
||||
return false;
|
||||
|
|
@ -43,6 +42,12 @@ sc_controller_init(struct sc_controller *controller, sc_socket control_socket,
|
|||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
sc_controller_set_acksync(struct sc_controller *controller,
|
||||
struct sc_acksync *acksync) {
|
||||
controller->receiver.acksync = acksync;
|
||||
}
|
||||
|
||||
void
|
||||
sc_controller_destroy(struct sc_controller *controller) {
|
||||
sc_cond_destroy(&controller->msg_cond);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue