Romain Vimont
c29a0bf675
Do not quit on cleanup configuration failure
...
Cleanup is used for some options like --show-touches to restore the
state on exit.
If the configuration fails, do not crash the whole process. Just log an
error.
PR #2802 <https://github.com/Genymobile/scrcpy/pull/2802 >
2021-11-18 08:37:28 +01:00
Romain Vimont
411bb0d18e
Move init and cleanup to a separate method
...
PR #2802 <https://github.com/Genymobile/scrcpy/pull/2802 >
2021-11-18 08:37:26 +01:00
Romain Vimont
cc0902b13c
Read/write settings via command on Android >= 12
...
Before Android 8, executing the "settings" command from a shell was
very slow (~1 second), because it spawned a new app_process to execute
Java code. Therefore, to access settings without performance issues,
scrcpy used private APIs to read from and write to settings.
However, since Android 12, this is not possible anymore, due to
permissions changes.
To make it work again, execute the "settings" command on Android 12 (or
on previous version if the other method failed). This method is faster
than before Android 8 (~100ms).
Fixes #2671 <https://github.com/Genymobile/scrcpy/issues/2671 >
Fixes #2788 <https://github.com/Genymobile/scrcpy/issues/2788 >
PR #2802 <https://github.com/Genymobile/scrcpy/pull/2802 >
2021-11-18 08:37:22 +01:00
Romain Vimont
48b572c272
Add throwable parameter to Log.w()
...
When an exception occurs, we might want to log a warning instead of an
error.
PR #2802 <https://github.com/Genymobile/scrcpy/pull/2802 >
2021-11-18 08:37:18 +01:00
Romain Vimont
94feae71f2
Report settings errors via Exceptions
...
Settings read/write errors were silently ignored. Report them via a
SettingsException so that the caller can handle them.
This allows to log a proper error message, and will also allow to
fallback to a different settings method in case of failure.
PR #2802 <https://github.com/Genymobile/scrcpy/pull/2802 >
2021-11-18 08:37:02 +01:00
Romain Vimont
67170437f1
Wrap settings management into a Settings class
...
Until now, the code that needed to read/write the Android settings had
to explicitly open and close a ContentProvider.
Wrap these details into a Settings class.
This paves the way to provide an alternative implementation of settings
read/write for Android >= 12.
PR #2802 <https://github.com/Genymobile/scrcpy/pull/2802 >
2021-11-18 08:36:48 +01:00
LuXu
57fb08e443
Update Simplified Chinese README to 1.20
...
PR #2786 <https://github.com/Genymobile/scrcpy/pull/2786 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-11-17 19:14:32 +01:00
Alex Burdusel
02ae0db6cd
Fix wrong package to install for Ubuntu/Debian
...
Without this package, meson fails:
Run-time dependency libusb-1.0 found: NO (tried pkgconfig and cmake)
app/meson.build:88:8: ERROR: Dependency "libusb-1.0" not found, tried pkgconfig and cmake
PR #2790 <https://github.com/Genymobile/scrcpy/pull/2790 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-11-15 22:42:08 +01:00
Romain Vimont
9cb14b5166
Inherit only specific handles on Windows
...
To be able to communicate with a child process via stdin, stdout and
stderr, the CreateProcess() parameter bInheritHandles must be set to
TRUE. But this causes *all* handles to be inherited, including sockets.
As a result, the server socket was inherited by the process running adb
to execute the server on the device, so it could not be closed properly,
causing other scrcpy instances to fail.
To fix the issue, use an extended API to explicitly set the HANDLEs to
inherit:
- <https://stackoverflow.com/a/28185363/1987178 >
- <https://devblogs.microsoft.com/oldnewthing/20111216-00/?p=8873 >
Fixes #2779 <https://github.com/Genymobile/scrcpy/issues/2779 >
PR #2783 <https://github.com/Genymobile/scrcpy/pull/2783 >
2021-11-15 10:13:30 +01:00
Romain Vimont
9cb8766220
Factorize resource release after CreateProcess()
...
Free the wide characters string in all cases before checking for errors.
2021-11-15 07:49:01 +01:00
Romain Vimont
fd4ec784e0
Remove useless assignments on error
...
Leave the output parameter untouched on error.
2021-11-14 22:53:49 +01:00
Romain Vimont
52cebe1597
Fix Windows sc_pipe function names
...
The implementation name was incorrect (it was harmless, because they are
not used on Windows).
2021-11-14 22:41:38 +01:00
Romain Vimont
6a27062f48
Stop connection attempts if interrupted
...
If the interruptor is interrupted, every network call will fail, but the
retry-on-error mechanism must also be stopped.
2021-11-14 15:40:59 +01:00
Romain Vimont
739ff9dce0
Fix compilation errors with old SDL versions
...
SDL_PixelFormatEnum has been introduced in SDL 2.0.10:
<cc6a8ac87e
>
SDL_PIXELFORMAT_BGR444 has been introduced in SDL 2.0.12:
<a1c11854f2
>
Fixes #2777 <https://github.com/Genymobile/scrcpy/issues/2777 >
PR #2781 <https://github.com/Genymobile/scrcpy/pull/2781 >
Reviewed-by: Yu-Chen Lin <npes87184@gmail.com>
2021-11-14 15:37:30 +01:00
Romain Vimont
65b023ac6d
Update links to v1.20
2021-11-14 01:51:32 +01:00
Romain Vimont
a045e28df8
Bump version to 1.20
2021-11-14 01:25:24 +01:00
Romain Vimont
52138fd921
Update script to build without gradle to SDK 31
...
Build tools 31.x.x do not ship dx anymore. Use d8 instead.
Refs 8bf28e9f53
2021-11-14 01:25:24 +01:00
Romain Vimont
1bb0df5da1
Extract ANDROID_JAR path in build script
...
This will allow to reuse it.
2021-11-14 01:25:24 +01:00
Romain Vimont
562ec6e9b3
Merge branch 'master' into dev
2021-11-14 01:25:00 +01:00
Romain Vimont
1be5daf999
Fix word order in README
2021-11-14 01:23:06 +01:00
Romain Vimont
57387fa707
Mention crash on Android 12 on old scrcpy in FAQ
2021-11-14 01:23:06 +01:00
Romain Vimont
4e811a4a68
Adapt icon in README
...
Use SVG format, align to the right, and reduce its size.
2021-11-14 01:23:06 +01:00
Romain Vimont
99a4a48477
Replace "connected on" to "connected via"
...
I'm not sure "connected on USB" is correct.
2021-11-14 01:23:06 +01:00
Romain Vimont
1d97d77032
Improve scrcpy presentation in README
2021-11-14 01:23:06 +01:00
Romain Vimont
45b0f8123a
Increase delay to inject HID on Ctrl+v
...
2 milliseconds turn out to be insufficient sometimes. It seems that 5
milliseconds is enough (and still not noticeable).
2021-11-14 01:23:06 +01:00
Romain Vimont
c1a34881d7
Use sc_ prefix for server
2021-11-14 01:23:05 +01:00
Romain Vimont
057c7a4df4
Move str_util to str
...
Simplify naming.
2021-11-14 01:22:22 +01:00
Romain Vimont
979ce64dc0
Improve string util API
...
Use prefixed names and improve documentation.
2021-11-14 01:22:22 +01:00
Romain Vimont
9a0bd545d5
Rename SC_INVALID_SOCKET to SC_SOCKET_NONE
...
For consistency with SC_PROCESS_NONE.
2021-11-14 01:22:22 +01:00
Romain Vimont
c4d008b96a
Extract adb tunnel to a separate component
...
This simplifies the server code.
2021-11-14 01:22:22 +01:00
Romain Vimont
0d45c29d13
Move IPV4_LOCALHOST to net.h
...
This constant will be used from several files.
2021-11-14 01:22:22 +01:00
Romain Vimont
37c840a4c8
Interrupt on process terminated
...
Interrupt any blocking call on process terminated, like on
server_stop().
This allows to interrupt any blocking accept() with correct
synchronization without additional complexity.
2021-11-14 01:22:22 +01:00
Romain Vimont
f488cbd7e7
Make server interruptible
...
Use an interruptor to immediately wake up blocking calls on
server_stop().
2021-11-14 01:22:20 +01:00
Romain Vimont
40340509d9
Add interruptor utilities
...
Expose wrapper functions for interrupting blocking calls, for process
and sockets.
2021-11-13 22:54:18 +01:00
Romain Vimont
e0896142db
Introduce interruptor tool
...
An interruptor instance will help to wake up a blocking call from
another thread (typically to terminate immediately on Ctrl+C).
2021-11-13 22:53:07 +01:00
Romain Vimont
0426708544
Run the server from a dedicated thread
...
Define server callbacks, start the server asynchronously and listen to
connection events to initialize scrcpy properly.
It will help to simplify the server code, and allows to run the UI event
loop while the server is connecting. In particular, this will allow to
receive SIGINT/Ctrl+C events during connection to interrupt immediately.
2021-11-13 10:19:52 +01:00
Romain Vimont
5b9c88693e
Wait using a condition variable in server
...
Currently, server_stop() is called from the same thread as
server_connect_to(), so interruption may never happen.
This is a step to prepare executing the server from a dedicated thread.
2021-11-13 10:17:51 +01:00
Romain Vimont
a54dc8212f
Reorder server functions
...
This will avoid forward declarations in future commits.
2021-11-13 10:16:35 +01:00
Romain Vimont
882e4cff5f
Copy server params
...
This is a preliminary step necessary to move the server to a separate
thread.
2021-11-13 10:05:20 +01:00
Romain Vimont
9fa4d1cd4a
Reorder server and server_params
...
This will allow to define a server_params field in server.
2021-11-13 10:05:20 +01:00
Romain Vimont
0bfa75a48b
Split socket creation and connect/listen
...
This will allow to assign the socket to a variable before connecting or
listening, so that it can be interrupted from another thread.
2021-11-13 10:05:20 +01:00
Romain Vimont
ed19901db1
Set video and control sockets only on success
...
Store the video and control sockets only if server_connect_to() returns
successfully.
2021-11-13 10:05:01 +01:00
Romain Vimont
e69356c550
Initialize tunnel_enabled flag internally
...
Set the flag from the inner methods, to avoid bypassing the assignment
by mistake (on error for example).
2021-11-13 10:03:03 +01:00
Romain Vimont
03de9224fc
Introduce process observer
...
Add a tool to easily observe process termination.
This allows to move this complexity out of the server code.
2021-11-13 10:02:23 +01:00
Romain Vimont
aa011832c1
Improve process API
...
Prefix symbols and constants names and improve documentation.
2021-11-12 22:44:37 +01:00
Romain Vimont
7e93abcf6d
Factorize common impl of process_execute()
...
Both implementations are the same. Move them to the common process.c.
2021-11-12 22:44:37 +01:00
Romain Vimont
e80e6631e4
Remove duplicate function declaration
...
The function process_terminate() was declared twice.
2021-11-12 22:44:37 +01:00
Romain Vimont
fcc04f967b
Improve file API
...
Prefix symbols and constants names and improve documentation.
2021-11-12 22:44:37 +01:00
Romain Vimont
d4c262301f
Move functions from process to file
...
Move filesystem-related functions from process.[ch] to file.[ch].
2021-11-12 22:44:37 +01:00
Romain Vimont
be55e250ca
Make screen_render() static
...
It is only used from screen.c.
2021-11-12 22:44:22 +01:00