From 3760c8c222a76d0933545d21c8aa7edcb8d4e135 Mon Sep 17 00:00:00 2001 From: gamegrd Date: Mon, 26 Jul 2021 19:51:56 +0800 Subject: [PATCH] add plugin system --- app/meson.build | 1 + app/src/plugin.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ app/src/plugin.h | 5 +++++ app/src/scrcpy.c | 5 +++-- 4 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 app/src/plugin.c create mode 100644 app/src/plugin.h diff --git a/app/meson.build b/app/meson.build index 0663c641..fe35ae43 100644 --- a/app/meson.build +++ b/app/meson.build @@ -2,6 +2,7 @@ src = [ 'src/main.c', 'src/adb.c', 'src/cli.c', + 'src/plugin.c', 'src/compat.c', 'src/control_msg.c', 'src/controller.c', diff --git a/app/src/plugin.c b/app/src/plugin.c new file mode 100644 index 00000000..e709dda8 --- /dev/null +++ b/app/src/plugin.c @@ -0,0 +1,49 @@ +#include "plugin.h" +#include "scrcpy.h" +#include +#include +#include + +#ifdef _WIN32 +// not needed here, but winsock2.h must never be included AFTER windows.h +# include +# include +#endif + +#ifdef _WIN32 + +#define WM_PLUGIN_BASE WM_USER +void on_window_message(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, int64_t lParam){ + (void)(userdata); + (void)(hWnd); + if (message >= WM_PLUGIN_BASE ){ + message -= WM_PLUGIN_BASE; + switch (message) + { + case SDL_FINGERDOWN: + case SDL_FINGERUP: + case SDL_FINGERMOTION: + { + SDL_Event sdlevent; + sdlevent.type = message; + sdlevent.tfinger.fingerId = 0; + sdlevent.tfinger.pressure = 0.8; + sdlevent.tfinger.x = (double)(wParam) / (1000*1000); + sdlevent.tfinger.y = (double)(lParam) / (1000*1000); + SDL_PushEvent(&sdlevent); + } + break; + default: + break; + } + + } +} +#endif + + +void plugin_init(){ +#ifdef _WIN32 + SDL_SetWindowsMessageHook(on_window_message,NULL); +#endif +} diff --git a/app/src/plugin.h b/app/src/plugin.h new file mode 100644 index 00000000..c1d1be07 --- /dev/null +++ b/app/src/plugin.h @@ -0,0 +1,5 @@ +#ifndef __PLUGIN_H__ +#define __PLUGIN_H__ + +void plugin_init(); +#endif \ No newline at end of file diff --git a/app/src/scrcpy.c b/app/src/scrcpy.c index 4dcb412f..f0797dfa 100644 --- a/app/src/scrcpy.c +++ b/app/src/scrcpy.c @@ -1,5 +1,5 @@ #include "scrcpy.h" - +#include "plugin.h" #include #include #include @@ -115,6 +115,7 @@ sdl_init_and_configure(bool display, const char *render_driver, SDL_EnableScreenSaver(); } + plugin_init(); return true; } @@ -290,7 +291,7 @@ scrcpy(const struct scrcpy_options *options) { options->disable_screensaver)) { goto end; } - + char device_name[DEVICE_NAME_FIELD_LENGTH]; struct size frame_size;