Fix issues in rebase

This commit is contained in:
Simon Chan 2023-02-07 15:38:39 +08:00
parent ae83fe3214
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
return 1;
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;
buffer_write16be(&buf[4], msg->inject_game_controller_axis.value);
sc_write16be(&buf[4], msg->inject_game_controller_axis.value);
return 6;
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[4] = msg->inject_game_controller_button.state;
return 5;
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;
return 4;
default:

View file

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

View file

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

View file

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

View file

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

View file

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