Fix issues in rebase

This commit is contained in:
Simon Chan 2023-02-07 15:38:39 +08:00
commit 8df26fef2b
No known key found for this signature in database
GPG key ID: A8B69F750B9BCEDD
6 changed files with 37 additions and 19 deletions

View file

@ -153,17 +153,17 @@ sc_control_msg_serialize(const struct sc_control_msg *msg, unsigned char *buf) {
// no additional data // no additional data
return 1; return 1;
case SC_CONTROL_MSG_TYPE_INJECT_GAME_CONTROLLER_AXIS: case SC_CONTROL_MSG_TYPE_INJECT_GAME_CONTROLLER_AXIS:
buffer_write16be(&buf[1], msg->inject_game_controller_axis.id); sc_write16be(&buf[1], msg->inject_game_controller_axis.id);
buf[3] = msg->inject_game_controller_axis.axis; buf[3] = msg->inject_game_controller_axis.axis;
buffer_write16be(&buf[4], msg->inject_game_controller_axis.value); sc_write16be(&buf[4], msg->inject_game_controller_axis.value);
return 6; return 6;
case SC_CONTROL_MSG_TYPE_INJECT_GAME_CONTROLLER_BUTTON: case SC_CONTROL_MSG_TYPE_INJECT_GAME_CONTROLLER_BUTTON:
buffer_write16be(&buf[1], msg->inject_game_controller_button.id); sc_write16be(&buf[1], msg->inject_game_controller_button.id);
buf[3] = msg->inject_game_controller_button.button; buf[3] = msg->inject_game_controller_button.button;
buf[4] = msg->inject_game_controller_button.state; buf[4] = msg->inject_game_controller_button.state;
return 5; return 5;
case SC_CONTROL_MSG_TYPE_INJECT_GAME_CONTROLLER_DEVICE: case SC_CONTROL_MSG_TYPE_INJECT_GAME_CONTROLLER_DEVICE:
buffer_write16be(&buf[1], msg->inject_game_controller_device.id); sc_write16be(&buf[1], msg->inject_game_controller_device.id);
buf[3] = msg->inject_game_controller_device.event; buf[3] = msg->inject_game_controller_device.event;
return 4; return 4;
default: default:

View file

@ -62,7 +62,7 @@ sc_input_manager_init(struct sc_input_manager *im,
im->kp = params->kp; im->kp = params->kp;
im->mp = params->mp; im->mp = params->mp;
im->forward_game_controllers = options->forward_game_controllers; im->forward_game_controllers = params->forward_game_controllers;
im->forward_all_clicks = params->forward_all_clicks; im->forward_all_clicks = params->forward_all_clicks;
im->legacy_paste = params->legacy_paste; im->legacy_paste = params->legacy_paste;
im->clipboard_autosync = params->clipboard_autosync; im->clipboard_autosync = params->clipboard_autosync;
@ -799,29 +799,29 @@ sc_input_manager_process_file(struct sc_input_manager *im,
} }
void void
input_manager_process_controller_axis(struct input_manager *im, input_manager_process_controller_axis(struct sc_input_manager *im,
const SDL_ControllerAxisEvent *event) { const SDL_ControllerAxisEvent *event) {
struct control_msg msg; struct sc_control_msg msg;
msg.type = CONTROL_MSG_TYPE_INJECT_GAME_CONTROLLER_AXIS; msg.type = SC_CONTROL_MSG_TYPE_INJECT_GAME_CONTROLLER_AXIS;
msg.inject_game_controller_axis.id = event->which; msg.inject_game_controller_axis.id = event->which;
msg.inject_game_controller_axis.axis = event->axis; msg.inject_game_controller_axis.axis = event->axis;
msg.inject_game_controller_axis.value = event->value; msg.inject_game_controller_axis.value = event->value;
controller_push_msg(im->controller, &msg); sc_controller_push_msg(im->controller, &msg);
} }
void void
input_manager_process_controller_button(struct input_manager *im, input_manager_process_controller_button(struct sc_input_manager *im,
const SDL_ControllerButtonEvent *event) { const SDL_ControllerButtonEvent *event) {
struct control_msg msg; struct sc_control_msg msg;
msg.type = CONTROL_MSG_TYPE_INJECT_GAME_CONTROLLER_BUTTON; msg.type = SC_CONTROL_MSG_TYPE_INJECT_GAME_CONTROLLER_BUTTON;
msg.inject_game_controller_button.id = event->which; msg.inject_game_controller_button.id = event->which;
msg.inject_game_controller_button.button = event->button; msg.inject_game_controller_button.button = event->button;
msg.inject_game_controller_button.state = event->state; msg.inject_game_controller_button.state = event->state;
controller_push_msg(im->controller, &msg); sc_controller_push_msg(im->controller, &msg);
} }
static SDL_GameController ** static SDL_GameController **
find_free_game_controller_slot(struct input_manager *im) { find_free_game_controller_slot(struct sc_input_manager *im) {
for (unsigned i = 0; i < MAX_GAME_CONTROLLERS; ++i) { for (unsigned i = 0; i < MAX_GAME_CONTROLLERS; ++i) {
if (!im->game_controllers[i]) { if (!im->game_controllers[i]) {
return &im->game_controllers[i]; return &im->game_controllers[i];
@ -831,8 +831,21 @@ find_free_game_controller_slot(struct input_manager *im) {
return NULL; return NULL;
} }
static bool
free_game_controller_slot(struct sc_input_manager *im,
SDL_GameController *game_controller) {
for (unsigned i = 0; i < MAX_GAME_CONTROLLERS; ++i) {
if (im->game_controllers[i] == game_controller) {
im->game_controllers[i] = NULL;
return true;
}
}
return false;
}
void void
input_manager_process_controller_device(struct input_manager *im, input_manager_process_controller_device(struct sc_input_manager *im,
const SDL_ControllerDeviceEvent *event) { const SDL_ControllerDeviceEvent *event) {
SDL_JoystickID id; SDL_JoystickID id;
@ -882,12 +895,12 @@ input_manager_process_controller_device(struct input_manager *im,
return; return;
} }
struct control_msg msg; struct sc_control_msg msg;
msg.type = SC_CONTROL_MSG_TYPE_INJECT_GAME_CONTROLLER_DEVICE; msg.type = SC_CONTROL_MSG_TYPE_INJECT_GAME_CONTROLLER_DEVICE;
msg.inject_game_controller_device.id = id; msg.inject_game_controller_device.id = id;
msg.inject_game_controller_device.event = event->type; msg.inject_game_controller_device.event = event->type;
msg.inject_game_controller_device.event -= SDL_CONTROLLERDEVICEADDED; msg.inject_game_controller_device.event -= SDL_CONTROLLERDEVICEADDED;
controller_push_msg(im->controller, &msg); sc_controller_push_msg(im->controller, &msg);
} }
void void
@ -937,6 +950,7 @@ sc_input_manager_handle_event(struct sc_input_manager *im, SDL_Event *event) {
break; break;
} }
sc_input_manager_process_file(im, &event->drop); sc_input_manager_process_file(im, &event->drop);
break;
} }
case SDL_CONTROLLERAXISMOTION: case SDL_CONTROLLERAXISMOTION:
if (!control || !im->forward_game_controllers) { if (!control || !im->forward_game_controllers) {

View file

@ -54,6 +54,7 @@ struct sc_input_manager_params {
struct sc_key_processor *kp; struct sc_key_processor *kp;
struct sc_mouse_processor *mp; struct sc_mouse_processor *mp;
bool forward_game_controllers;
bool forward_all_clicks; bool forward_all_clicks;
bool legacy_paste; bool legacy_paste;
bool clipboard_autosync; bool clipboard_autosync;

View file

@ -367,8 +367,8 @@ scrcpy(struct scrcpy_options *options) {
sdl_configure(options->display, options->disable_screensaver); sdl_configure(options->display, options->disable_screensaver);
if (SDL_Init(SDL_INIT_GAMECONTROLLER)) { if (SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER)) {
LOGC("Could not initialize SDL: %s", SDL_GetError()); LOGE("Could not initialize SDL: %s", SDL_GetError());
return false; return false;
} }
@ -602,6 +602,7 @@ aoa_hid_end:
.fp = fp, .fp = fp,
.kp = kp, .kp = kp,
.mp = mp, .mp = mp,
.forward_game_controllers = options->forward_game_controllers,
.forward_all_clicks = options->forward_all_clicks, .forward_all_clicks = options->forward_all_clicks,
.legacy_paste = options->legacy_paste, .legacy_paste = options->legacy_paste,
.clipboard_autosync = options->clipboard_autosync, .clipboard_autosync = options->clipboard_autosync,

View file

@ -525,6 +525,7 @@ sc_screen_init(struct sc_screen *screen,
.screen = screen, .screen = screen,
.kp = params->kp, .kp = params->kp,
.mp = params->mp, .mp = params->mp,
.forward_game_controllers = params->forward_game_controllers,
.forward_all_clicks = params->forward_all_clicks, .forward_all_clicks = params->forward_all_clicks,
.legacy_paste = params->legacy_paste, .legacy_paste = params->legacy_paste,
.clipboard_autosync = params->clipboard_autosync, .clipboard_autosync = params->clipboard_autosync,

View file

@ -74,6 +74,7 @@ struct sc_screen_params {
struct sc_key_processor *kp; struct sc_key_processor *kp;
struct sc_mouse_processor *mp; struct sc_mouse_processor *mp;
bool forward_game_controllers;
bool forward_all_clicks; bool forward_all_clicks;
bool legacy_paste; bool legacy_paste;
bool clipboard_autosync; bool clipboard_autosync;