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
ae8fdda09e
Improve FAQ explanations
2022-01-24 08:55:27 +01:00
Romain Vimont
1ff69e21c2
Update error messages in FAQ
...
With the recent versions, scrcpy first executes "adb get-serialno", so
the adb error messages are not exactly the same.
2022-01-24 08:54:09 +01:00
Romain Vimont
a9429efa34
Fix downsize on error before first frame
...
Retry with a lower definition if MediaCodec fails before the first
frame, not the first packet.
In practice, the first packet is a config packet without any frame, and
MediaCodec might fail just after.
Refs 2eb6fe7d81
Refs #2963 <https://github.com/Genymobile/scrcpy/issues/2963 >
2022-01-23 21:46:57 +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
262506c733
Limit retry-on-error to IllegalStateException
...
MediaCodec errors always trigger IllegalStateException or a subtype
(like MediaCodec.CodecException).
In practice, this avoids to retry if the error is caused by an
IOException when writing the video packet to the socket.
2022-01-21 21:52:29 +01:00
Romain Vimont
2eb6fe7d81
Downsize on error only before the first frame
...
The purpose of automatic downscaling on error is to make mirroring work
by just starting scrcpy without an explicit -m value, even if the
encoder could not encode at the screen definition.
It is only useful when we detect an encoding failure before the first
frame. Downsizing later could be surprising, so disable it.
PR #2947 <https://github.com/Genymobile/scrcpy/pull/2947 >
2022-01-21 18:44:05 +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
8fa9e6b01a
Mention auto-downsize feature in FAQ
...
PR #2947 <https://github.com/Genymobile/scrcpy/pull/2947 >
2022-01-21 18:42:38 +01:00
Romain Vimont
0ec64baad4
Remove MediaCodec error suggestion fix
...
Now that scrcpy attempts with a lower definition on any MediaCodec
error (or the user explicitly requests to disable auto-downsizing), the
suggestion is unnecessary.
PR #2947 <https://github.com/Genymobile/scrcpy/pull/2947 >
2022-01-21 18:41:26 +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
26b4104844
Downsize on error
...
Some devices are not able to encode at the device screen definition.
Instead of just failing, try with a lower definition on any MediaCodec
error.
PR #2947 <https://github.com/Genymobile/scrcpy/pull/2947 >
2022-01-21 18:36:46 +01:00
Romain Vimont
723faa5dee
Remember Device parameters
...
This will allow to reuse them to recreate a ScreenInfo instance in order
to change the maxSize value on MediaCodec error.
PR #2947 <https://github.com/Genymobile/scrcpy/pull/2947 >
2022-01-21 18:36:46 +01:00
Romain Vimont
162043911e
Compute screen size without DisplayInfo instance
...
Use the actual rotation and size values directly.
This will allow to automatically change the maxSize value on MediaCodec
error.
PR #2947 <https://github.com/Genymobile/scrcpy/pull/2947 >
2022-01-21 18:36:46 +01:00
Romain Vimont
117fe32626
Fix visibility modifier
...
Refs b7a06278fe
2022-01-21 18:36:44 +01:00
Thomas Rebele
b7a06278fe
Fix NoSuchMethodException for injectInputEvent()
...
Some devices with modified ROMs expose a different signature for
injectInputEvent().
Fixes #2250 <https://github.com/Genymobile/scrcpy/issues/2250 >
PR #2946 <https://github.com/Genymobile/scrcpy/pull/2946 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2022-01-18 10:15:55 +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
Romain Vimont
37c7827d46
Simplify ffmpeg dependencies Makefile
...
The fact that the current prebuilt FFmpeg is split into two separate
zipfiles is an implementation detail.
Use a single Makefile recipe for both files.
PR #2952 <https://github.com/Genymobile/scrcpy/pull/2952 >
2022-01-18 10:13:18 +01:00
Tobias Preuss
479abc8c77
Reference Windows USB driver for Google devices
...
PR #2945 <https://github.com/Genymobile/scrcpy/pull/2945 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2022-01-16 17:46:43 +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
60bf133ac2
Add final modifier to ScreenEncoder fields
...
These fields are only set from the constructor.
2022-01-15 23:25:55 +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