Romain Vimont
b546c33eff
Do not print scrcpy version twice on --version
...
Refs 6da6d905c2
2022-01-27 21:12:46 +01:00
Romain Vimont
4817cadd09
Fix code style
...
Align function parameters.
2022-01-27 19:02:07 +01:00
Romain Vimont
02b5e87802
Slightly reduce lock usage
...
Locking the frame_buffer mutex to reference the input frame into the
tmp_frame is unnecessary.
This also fixes the missing unlock on error.
2022-01-27 19:01:43 +01:00
Romain Vimont
8e4d3beb01
Fix return value on adb commands error
2022-01-27 16:47:51 +01:00
Romain Vimont
9d2e00697e
Use sc_ prefix for control_msg enums
...
Refs afa4a1b728
2022-01-27 16:47:51 +01:00
Romain Vimont
f289d206ea
Disable more actions if --no-control
...
If control is disabled, then do not enable "show touches" or
automatically power off the device on close.
2022-01-24 21:45:44 +01:00
Romain Vimont
ca516f4318
Refactor if-block in cli
...
Several tests must be performed if opts->control is false.
2022-01-24 21:44:28 +01:00
Romain Vimont
5d6076bffd
Move misplaced break statements
...
With ifdefs, the resulting code could contain both a return statement
and a break.
2022-01-24 21:38:30 +01:00
Romain Vimont
e0bce1725b
Fix header guard prefix
2022-01-24 21:37:40 +01:00
Romain Vimont
063d103dd6
Capture mouse on start for --hid-mouse
...
If relative mode is enabled, capture the mouse immediately.
2022-01-23 21:31:53 +01:00
Romain Vimont
4bf9c057fe
Extract relative mode check to an inline function
...
This will allow to reuse the condition in another function.
2022-01-23 21:31:11 +01:00
Romain Vimont
17c97820b2
Never forward capture keys
...
In relative mode, Alt and Super are "capture keys". Never forward them
to the input manager, to avoid inconsistencies between UP and DOWN
events.
2022-01-23 21:16:40 +01:00
Romain Vimont
8c7f0ed5ea
Fix warning message
...
Make the message consistent for HID keyboard and HID mouse.
2022-01-23 21:16:35 +01:00
Romain Vimont
ac038f276e
Add missing break statement
...
This was harmless because this is the last "case" of the switch, but for
consistency, add the missing break.
2022-01-23 15:01:11 +01:00
Romain Vimont
1f65b1bf87
Remove inline hint
...
There is no reason to request inlining here.
2022-01-23 15:01:11 +01:00
Romain Vimont
d41a46dc95
Handle libusb_get_device_descriptor() error
...
The function libusb_get_device_descriptor() might return an error.
Handle it.
2022-01-23 12:32:37 +01:00
Romain Vimont
308a1f8192
Simplify error handling in sc_aoa_init()
...
Use goto to avoid many repetitions.
2022-01-23 12:32:37 +01:00
Romain Vimont
241a587e61
Fix missing HID mouse destructor call
...
The destructor unregisters the HID mouse, so it was not reported as a
leak, but it must still be called.
2022-01-23 12:32:04 +01:00
Romain Vimont
7e35bfe382
Refactor if-blocks
...
Group all conditions requiring a controller in a single if-block.
2022-01-23 12:16:24 +01:00
Romain Vimont
855819bbd8
Remove redundant control boolean
...
The controller is NULL if and only if control is disabled, so an
additional control boolean is redundant.
2022-01-23 12:16:24 +01:00
Romain Vimont
557daf280e
Pass NULL controller if control is disabled
...
If --no-control is requested, then the controller instance is not
initialized. However, its reference was still passed to screen and
input_manager.
Instead, pass NULL if no controller is available.
2022-01-23 12:16:24 +01:00
Romain Vimont
0b8e926330
Do not process finger events if no control
...
If --no-control is passed, then im->mp is NULL, so processing touches
would crash.
2022-01-23 12:16:24 +01:00
Romain Vimont
0ec3361bc9
Fix crash on --no-control
...
Relative mouse mode assumed that a mouse processor was always available,
but this is not the case if --no-control is passed.
2022-01-23 12:16:07 +01:00
Romain Vimont
81ff7ebd06
Simplify event loop
...
Merge single event handling with the event loop function.
2022-01-21 21:52:41 +01:00
Romain Vimont
1ffe312369
Handle file drop from input_manager
...
A file is pushed (or an apk is installed) to the device on file drop.
This behavior is specific to the screen and its input_manager.
2022-01-21 21:52:41 +01:00
Romain Vimont
ebef027c4f
Do not return status for event handling
...
It is never read. Simplify.
2022-01-21 21:52:41 +01:00
Romain Vimont
8e4e7d42f1
Fix leak on file pusher error
...
If a file_push request fails, the allocated filename must be freed.
2022-01-21 21:52:41 +01:00
Romain Vimont
b066dc0bbf
Rename file_handler to sc_file_pusher
...
Rename handler to pusher ("handler" is too generic), and add sc_ prefix.
2022-01-21 21:52:41 +01:00
Romain Vimont
3a0ba7d0a4
Disable downsizing on error if V4L2 is enabled
...
V4L2 device is created with the initial device size, it does not support
resizing.
PR #2947 <https://github.com/Genymobile/scrcpy/pull/2947 >
2022-01-21 18:44:05 +01:00
Romain Vimont
75c5dc6859
Position and size the window on first frame
...
The optimal initial size was computed from the expected dimensions, sent
immediately by the server before encoding any video frame.
However, the actual frame size may be different, for example when the
device encoder does not support the requested size.
To always handle this case properly, position and size the window only
once the first frame size is known.
PR #2947 <https://github.com/Genymobile/scrcpy/pull/2947 >
2022-01-21 18:43:46 +01:00
Romain Vimont
fa30f9806a
Move "show window" call on first frame
...
Show the window only after the actual frame size is known (and if no
error has occurred).
This will allow to properly position and size the window when the size
of the first frame is different from the size initially announced by the
server.
PR #2947 <https://github.com/Genymobile/scrcpy/pull/2947 >
2022-01-21 18:42:39 +01:00
Romain Vimont
4fb61ac83d
Fix screen comments
...
The position fields accept SC_WINDOW_POSITION_UNDEFINED, not the size
fields.
PR #2947 <https://github.com/Genymobile/scrcpy/pull/2947 >
2022-01-21 18:42:39 +01:00
Romain Vimont
15bf27afdd
Make auto-downsize on error optional
...
Add --no-downsize-on-error option to disable attempts to use a lower
definition on MediaCodec error.
PR #2947 <https://github.com/Genymobile/scrcpy/pull/2947 >
2022-01-21 18:36:46 +01:00
Romain Vimont
b3ff1f6b3b
Upgrade FFmpeg (5.0) for Windows 64-bit
...
Use FFmpeg win64 binaries from gyan.dev (referenced from ffmpeg.org):
- https://www.gyan.dev/ffmpeg/builds/
- https://ffmpeg.org/download.html#build-windows
Keep the old FFmpeg prebuilt binaries (4.3.1) for win32 builds.
Fixes #1753 <https://github.com/Genymobile/scrcpy/issues/1753 >
Refs #1838 <https://github.com/Genymobile/scrcpy/pull/1838 >
Refs #2583 <https://github.com/Genymobile/scrcpy/pull/2583 >
PR #2952 <https://github.com/Genymobile/scrcpy/pull/2952 >
Co-authored-by: Yu-Chen Lin <npes87184@gmail.com>
Co-authored-by: nkh0472 <nkh0472@hotmail.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2022-01-18 10:13:41 +01:00
Romain Vimont
a2495c5ef1
Use symlink to simplify Windows ffmpeg dependency
...
The FFmpeg dependency is downloaded from two separate zipfiles.
Symlink include/ to expose everything from a single directory, to
simplify the meson script.
PR #2952 <https://github.com/Genymobile/scrcpy/pull/2952 >
2022-01-18 10:13:38 +01:00
Bernhard Rosenkränzer
5e8fa56e7a
Fix build with ffmpeg 5.0
...
PR #2948 <https://github.com/Genymobile/scrcpy/pull/2948 >
Signed-off-by: Bernhard Rosenkränzer <bero@lindev.ch>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2022-01-16 17:37:28 +01:00
Romain Vimont
1c71bd16be
Use constant string for known booleans
...
Boolean options explicitly passed to the server are statically known.
2022-01-15 23:25:43 +01:00
Romain Vimont
afa4a1b728
Use sc_ prefix for control_msg
2022-01-14 22:17:30 +01:00
Romain Vimont
3a4d5c7f18
Use sc_ prefix for controller
2022-01-14 22:17:30 +01:00
Romain Vimont
5f7ddff8ae
Use sc_ prefix for input_manager
2022-01-14 22:17:30 +01:00
Romain Vimont
2a0c2e5e99
Use sc_ prefix for screen
2022-01-14 22:17:30 +01:00
Romain Vimont
a6644e831b
Fix code style
...
Limit to 80 chars.
2022-01-14 20:57:03 +01:00
Romain Vimont
75655194fb
Do not pass scrcpy_options to keyboard inject
...
The components should be configurable independently of the global
scrcpy_options instance: their configuration could be provided
separately, like it is the case for example for some screen parameters.
For consistency, keyboard injection should not depend on scrcpy_options.
2022-01-14 20:55:44 +01:00
Romain Vimont
cba84f6999
Add support for HID mouse
2022-01-04 17:41:40 +01:00
Romain Vimont
ed2e45ee29
Refactor AOA/HID keyboard initialization
...
This paves the way to add support for HID mouse initialization.
2022-01-04 17:41:40 +01:00
Romain Vimont
aee1b39790
Add CLAMP() macro
2022-01-04 17:41:40 +01:00
Romain Vimont
17d01b5bf7
Add UI/UX support for relative mouse mode
...
In relative mouse mode, the mouse pointer must be "captured" from the
computer.
Toggle (disable/enable) relative mouse mode using any of the hardcoded
capture keys:
- left-Alt
- left-Super
- right-Super
These capture keys do not conflict with shortcuts, since a shortcut is
always a combination of the MOD key and some other key, while the
capture key triggers an action only if it is pressed and released alone.
The relative mouse mode is also automatically enabled on any click in
the window, and automatically disabled on focus lost (it is possible to
lose focus even without the mouse).
2022-01-04 17:41:40 +01:00
Romain Vimont
40fca82b60
Forward all motion events to mouse processors
...
The decision to not send motion events when no click is pressed is
specific to Android mouse injection. Other mouse processors (e.g. for
HID mouse) will need to receive all events.
2022-01-04 17:41:40 +01:00
Romain Vimont
643293752d
Provide relative mouse motion vector in event
...
This will allow the mouse processor to handle relative motion easily.
2022-01-04 17:41:40 +01:00
Romain Vimont
b5855e5deb
Add relative mode flag to mouse processors
...
The default mouse injection works in absolute mode: it forwards clicks
at a specific position on screen.
To support HID mouse, add a flag to indicate that the mouse processor
works in relative mode: it forwards mouse motion vectors, without any
absolute reference to the screen.
2022-01-04 17:41:40 +01:00