Romain Vimont
fd63e7eb5a
Format shortcut documentation
...
For consistency, start the descriptions with a capital letter.
2020-04-08 12:02:15 +02:00
Romain Vimont
54ccccd883
Replace SDL_Atomic by stdatomic from C11
...
There is no reason to use SDL atomics.
2020-04-02 21:05:26 +02:00
Romain Vimont
bea1c11f8e
Do not log success on failure
...
If calling the private API does not work, an exception is printed. In
that case, do not log that the action succeeded.
2020-04-02 21:05:26 +02:00
Romain Vimont
94e1696869
Do not warn on terminating the server
...
If the server is already dead, terminating it fails. This is expected.
2020-04-02 21:05:26 +02:00
Romain Vimont
a346bb80f4
Do not block on accept() if server died
...
The server may die before connecting to the client. In that case, the
client was blocked indefinitely (until Ctrl+C) on accept().
To avoid the problem, close the server socket once the server process is
dead.
2020-04-02 21:05:26 +02:00
Romain Vimont
d421741a83
Wait server from a separate thread
...
Create a thread just to wait for the server process exit.
This paves the way to simply wake up a blocking accept() in a portable
way.
2020-04-02 21:05:26 +02:00
Romain Vimont
64d5edce92
Refactor server_start() error handling
...
This avoids cleanup duplication.
2020-04-02 21:05:26 +02:00
Romain Vimont
5031b2c8ff
Remove MagicNumber checkstyle
...
There are a lot of "magic numbers" that we really don't want to extract
as a constant.
Until now, many @SuppressWarnings annotations were added, but it makes
no sense to check for magic number if we silent the warnings everywhere.
2020-03-28 22:08:16 +01:00
Romain Vimont
4adf5fde6d
Log device details on server start
2020-03-28 15:52:02 +01:00
Romain Vimont
e050cfdcd6
Fix static_assert() parameters
...
In C11, static_assert() expects a message.
2020-03-27 14:01:56 +01:00
Romain Vimont
dc7c677728
Accept negative window position
...
It seems to work on some window managers.
Fixes #1242 <https://github.com/Genymobile/scrcpy/issues/1242 >
2020-03-26 22:52:41 +01:00
Romain Vimont
3504c0016b
Add tests for control message length
...
This will avoid regressions for #1245 .
<https://github.com/Genymobile/scrcpy/issues/1245 >
2020-03-26 22:48:01 +01:00
Romain Vimont
89d1602185
Fix expected message length for touch events
...
The expected length for a touch event control message was incorrect. As
a consequence, a BufferUnderflowException could occur.
Fixes #1245 <https://github.com/Genymobile/scrcpy/issues/1245 >
2020-03-26 22:45:43 +01:00
Romain Vimont
566ba766af
Remove unused constant
...
It has not been removed when mouse and touch events have been merged.
2020-03-26 22:43:53 +01:00
Romain Vimont
600df37753
Mention AutoAdb in README
2020-03-19 19:16:08 +01:00
Romain Vimont
902b99174d
Fix server debugger for Android >= 9
...
Add a compilation flag to select the debugger method to use:
- old: Android < 9
- new: Android >= 9
See <https://github.com/Genymobile/scrcpy/issues/1187#issuecomment-599075661 >
2020-03-19 19:15:43 +01:00
Romain Vimont
ae2d094362
Handle locked video orientation from ScreenInfo
...
Centralize video size management in ScreenInfo.
This allows to always send the correct initial video size to the client
if the video orientation is locked.
2020-03-08 10:38:31 +01:00
Romain Vimont
c5f5d1e456
Rename "rotation" to "device rotation"
...
This paves the way to reduce confusion in ScreenInfo when it will handle
locked video orientation.
2020-03-04 22:15:10 +01:00
Romain Vimont
63286424bb
Compute all screen info from ScreenInfo
...
Screen information was partially initialized from Device. Move this
initialization to ScreenInfo.
2020-03-04 22:15:10 +01:00
Romain Vimont
da18c9cdab
Remove useles import
2020-03-04 22:15:10 +01:00
Romain Vimont
ef56cc6ff7
Retrieve screen info once
...
The method getScreenInfo() is synchronized, and the result may change
between calls.
Call it once and store the result in a local variable.
2020-02-27 21:24:37 +01:00
Romain Vimont
c0f428eb05
Merge branch 'master' into dev
2020-02-27 21:24:32 +01:00
Romain Vimont
4794ca8ae7
Use linear filtering
...
Anisotropic filtering makes no sense for scrcpy use case.
This (semantically) reverts 9e328ef98b .
2020-02-25 12:20:18 +01:00
Romain Vimont
1144f64214
Indicate that -s can also be used for TCP/IP
2020-02-06 18:42:08 +01:00
Romain Vimont
39356602ed
Mention scrcpy Debian package in README
2020-01-19 16:19:51 +01:00
Romain Vimont
0fb22c3e98
Happy new year 2020!
2020-01-19 16:04:20 +01:00
Romain Vimont
96bd2c974d
Do not report workarounds errors
...
Some workarounds are needed on some devices. But applying them may cause
exceptions on other devices, where they are not necessary anyway.
Do not report these errors in release builds.
Closes #994 <https://github.com/Genymobile/scrcpy/issues/994 >
2020-01-19 15:52:24 +01:00
Romain Vimont
dc7fcf3c7a
Accept port range
...
Accept a range of ports to listen to, so that it does not fail if
another instance of scrcpy is currently starting.
The range can be passed via the command line:
scrcpy -p 27183:27186
scrcpy -p 27183 # implicitly 27183:27183, as before
The default is 27183:27199.
Closes #951 <https://github.com/Genymobile/scrcpy/issues/951 >
2020-01-18 17:21:00 +01:00
Romain Vimont
2a3a9d4ea9
Add util function to parse a list of integers
...
This will help parsing arguments like '1234:5678' into a list of
integers.
2020-01-18 17:21:00 +01:00
Romain Vimont
ca0031cbde
Refactor server tunnel initialization
...
Start the server socket in enable_tunnel() directly.
For the caller point of view, enabling the tunnel opens a port (either
the server socket locally or the "adb forward" process).
2020-01-18 17:21:00 +01:00
Romain Vimont
d1a9a76cc6
Reorder functions
...
Move functions so that they can be called from enable_tunnel() (in the
following commit).
2020-01-18 17:21:00 +01:00
Romain Vimont
a8ceaf5284
Fix include order
2020-01-17 21:00:14 +01:00
Romain Vimont
83d48267a7
Accept --max-fps before Android 10
...
KEY_MAX_FPS_TO_ENCODER existed privately before Android 10:
<https://github.com/Genymobile/scrcpy/issues/488#issuecomment-567321437 >
2019-12-19 11:52:09 +01:00
Romain Vimont
db6252e52b
Simplify net.c
...
The platform-specific code for net.c was implemented in sys/*/net.c.
But the differences are quite limited, so use ifdef-blocks in the single
net.c instead.
2019-12-15 22:04:09 +01:00
Romain Vimont
229eeb24a2
Merge pull request #1002 into dev
...
Fix utf-8 char path in windows
<https://github.com/Genymobile/scrcpy/pull/1002 >
2019-12-15 13:24:17 +01:00
Romain Vimont
7d5845196e
Fix memory leak on portable builds
...
The function get_server_path() sometimes returned an owned string,
sometimes a non-owned string.
Always return an allocated (owned) string, and free it after usage.
2019-12-14 18:23:25 +01:00
Romain Vimont
31bd95022b
Update links to v1.12.1 in README and BUILD
2019-12-10 17:59:44 +01:00
Romain Vimont
4687a0ebac
Bump version to 1.12.1
2019-12-10 10:07:48 +01:00
Romain Vimont
6965d051ae
Limit bitrate range to 31 bits integer
...
A proper solution could be to use "long long" instead (guaranteed to be
at least 64 bits), but it adds its own problems (e.g. "%lld" is not
supported as a printf format on all platforms).
In practice, we don't need such high values, so keep it simple.
Fixes #995 <https://github.com/Genymobile/scrcpy/issues/995 >
2019-12-10 09:28:27 +01:00
Romain Vimont
71df3175bd
Update links to v1.12 in README and BUILD
2019-12-09 23:52:26 +01:00
Romain Vimont
a0f8e7fd9f
Bump version to 1.12
2019-12-09 23:24:43 +01:00
Romain Vimont
e4cebc8d4c
Do not build tests in release mode
...
Assertions would not be executed.
And as a side effect, it causes "unused variable" warnings.
2019-12-09 23:24:39 +01:00
Romain Vimont
ba1b36758e
Define SDL_MAIN_HANDLED in all tests
...
Each test defines its own main() function. If this flag is not set, then
SDL redefines it to SDL_main(), causing compilation failures.
2019-12-09 23:24:39 +01:00
Romain Vimont
ad92a192b5
Fix meson.build codestyle
2019-12-09 23:00:55 +01:00
Romain Vimont
81a8e503e5
Describe screen rotation shortcut in README
2019-12-09 22:51:27 +01:00
Romain Vimont
242e57d69b
Merge branch 'master' into dev
2019-12-09 22:37:20 +01:00
Romain Vimont
024c2f7e6b
Configure log priority early
...
The log priority must be configured before parsing command-line
arguments, in order to get logs as expected.
2019-12-09 22:31:14 +01:00
Romain Vimont
1eae139b6e
Add missing consts
...
String parsing functions should not be able to modify their input.
2019-12-09 22:30:48 +01:00
Romain Vimont
419c869c9c
Use ARRAY_LEN() macro in tests
2019-12-09 20:59:11 +01:00
Romain Vimont
929bf48c7e
Add tests for command-line parsing
2019-12-08 23:19:01 +01:00
Romain Vimont
d950383b72
Move command-line parsing to a separate file
2019-12-08 23:18:57 +01:00
Romain Vimont
61274a7cdb
Factorize integer argument parsing
...
Add util functions for integer parsing (with tests), and factorize
integer argument parsing to avoid code duplication.
2019-12-08 21:19:53 +01:00
Romain Vimont
64bcac9157
Refuse to push a non-regular file server
...
If SCRCPY_SERVER_PATH points to a directory, then a directory will be
pushed to /data/local/tmp/scrcpy-server.jar.
When executing it, app_process will just abort and leave the directory
on the device, causing scrcpy to always fail.
To avoid the problem, check that the server is a regular file before
pushing it.
Closes #956 <https://github.com/Genymobile/scrcpy/issues/956 >
2019-12-05 21:07:11 +01:00
Romain Vimont
3259c60b22
Fix test compilation on mingw
...
Including SDL2/SDL.h redefines main to SDL_main by default.
2019-12-05 21:06:49 +01:00
Romain Vimont
e0b117de13
Fix checkstyle warning
2019-12-05 21:05:45 +01:00
Romain Vimont
eb0f339271
Add shortcut to rotate screen
...
On Ctrl+r, disable auto-rotation (if enabled), set the screen rotation
and re-enable auto-rotation (if it was enabled).
Closes #11 <https://github.com/Genymobile/scrcpy/issues/11 >
2019-12-04 22:03:25 +01:00
Romain Vimont
bdd05b4a16
Refactor wrappers for Android SDK classes
...
Internally, a failure to invoke a method via reflection was partially
managed using exceptions, partially using a null return value.
Handle all errors at the same place, by not catching
NoSuchMethodException too early.
2019-12-04 19:34:20 +01:00
Romain Vimont
525d6d4a75
Try new methods before legacy ones
...
Use the legacy methods when the new ones do not exist.
2019-12-04 19:32:38 +01:00
Romain Vimont
4041043d1c
Merge pull request #967 into dev
...
Add some tests
<https://github.com/Genymobile/scrcpy/pull/967 >
2019-12-04 19:25:58 +01:00
Romain Vimont
3100533e56
Fix "natural scrolling"
...
> Movements down (scroll backward) generate negative y values and up
> (scroll forward) generate positive y values.
> If direction is SDL_MOUSEWHEEL_FLIPPED the values in x and y will be
> opposite. Multiply by -1 to change them back.
<https://wiki.libsdl.org/SDL_MouseWheelEvent#Remarks >
The x and y values already take the scrolling configuration into
account. Reversing the values when the direction is flipped cancels the
scrolling configuration.
Therefore, just ignore the direction field.
Fixes <https://github.com/Genymobile/scrcpy/issues/966 >
2019-12-03 21:10:43 +01:00
Romain Vimont
86fcd89d80
Fix max size default value
...
Suggested-by: jurkov
Closes <https://github.com/Genymobile/scrcpy/issues/978 >
2019-12-03 12:07:36 +01:00
Romain Vimont
8a694a9785
Suggest workaround for error 0xfffffc0e
...
When the hardware encoder is not able to encode at the given definition,
it fails with an error 0xfffffc0e.
It is documented in the FAQ:
<https://github.com/Genymobile/scrcpy/blob/master/FAQ.md#i-get-an-error-could-not-open-video-stream >
But it is better to directly suggest the workaround in the console.
2019-11-30 10:46:22 +01:00
Romain Vimont
26529d377f
Use virtual device id to avoid NPE
...
Inject mouse events using id -1 (virtual device) instead of 0 which
does not exist (and causes the InputDevice to be null).
Fixes <https://github.com/Genymobile/scrcpy/issues/962 >
2019-11-29 14:31:19 +01:00
Romain Vimont
15a206b7fc
Assert return value of mutex functions
...
Mutex functions may only fail due to a programming error.
Use assertions in debug builds, and ignore the value in release builds.
2019-11-27 21:40:58 +01:00
Romain Vimont
d0f5a7fd9f
Remove unused includes
...
No mutex is used in decoder.c and stream.c.
2019-11-27 21:40:54 +01:00
Romain Vimont
510caff0cd
Replace SDL_assert() by assert()
...
SDL_assert() open a dialog on assertion failure.
There is no reason not to use assert() directly.
2019-11-27 21:19:46 +01:00
Romain Vimont
b5ebb234dd
Replace BUILD_DEBUG by NDEBUG
...
Use the "standard" NDEBUG definition, which is used by assert().
2019-11-27 21:11:52 +01:00
Romain Vimont
73e8ec1b35
Remove path argument from cmd_execute()
...
It is always equal to argv[0] (or not used on Windows).
2019-11-27 21:11:52 +01:00
Romain Vimont
8dc11a0286
Fix warnings on Windows
...
fix warnings reported with -Dwarning_level=2 on Windows.
2019-11-27 21:11:52 +01:00
Romain Vimont
06104a701b
Fix windows build
...
Utilities have been moved to util/, but includes had not been updated
in Windows-specific files.
Ref: dfd0707a29
2019-11-27 13:25:56 +01:00
Romain Vimont
7637a113e3
Compile with warning_level=2 by default
2019-11-26 09:22:20 +01:00
Romain Vimont
31d9d56117
Fix warnings
...
Fix warnings reported with -Dwarning_level=2.
2019-11-26 09:10:41 +01:00
Romain Vimont
6abb8fd0cd
Reformat Java code
...
Reformated by Android studio to match the 150 characters column defined
in checkstyle.
2019-11-25 17:33:42 +01:00
Romain Vimont
2b845680b0
Initialize Application object to avoid NPE
...
When an ApplicationInfo is set (commit
90293240cc ), some devices (Nvidia Shield
TV) attempt to access the Application object, causing a
NullPointerException.
As a workaround, initialize an Application object.
Fixes <https://github.com/Genymobile/scrcpy/issues/940 >
2019-11-24 11:58:40 +01:00
Romain Vimont
ebdc2ee8b5
Rename variable for consistency
...
Use suffix "Field" for fields variables.
2019-11-24 11:55:42 +01:00
Romain Vimont
dfd0707a29
Move utilities to util/
2019-11-24 11:53:23 +01:00
Romain Vimont
83ace84280
Restore the .jar extension on the device side
...
Commit 3da95b52bd renamed
'scrcpy-server.jar' to 'scrcpy-server' to avoid issues on the client
side.
However, removing the extension may cause issues with app_process, so
restore the extension only on the device side.
Fixes <https://github.com/Genymobile/scrcpy/issues/944 >
2019-11-22 15:23:57 +01:00
Romain Vimont
c9d886f38b
Use the existing constants for device server path
2019-11-22 15:16:00 +01:00
Romain Vimont
40c3c57613
Update links to v1.11 in README and BUILD
2019-11-19 23:39:30 +01:00
Romain Vimont
2aa65015bc
Bump version to 1.11
2019-11-19 23:05:39 +01:00
Romain Vimont
4906aff454
Upgrade platform-tools (29.0.5) for Windows
...
Include the latest version of adb in Windows releases.
2019-11-19 23:05:39 +01:00
Romain Vimont
cb6b300483
Upgrade FFmpeg (4.2.1) for Windows
...
Include the latest version of FFmpeg in Windows releases.
2019-11-19 23:05:39 +01:00
Romain Vimont
c2116082ab
Remove deprecated options from help and manpage
...
Ref: ff061b4f30
2019-11-19 23:05:39 +01:00
Romain Vimont
3599fcaae5
Fix help for --window-width and --window-height
...
The default value is 0 (automatic), not -1.
2019-11-19 22:58:18 +01:00
Romain Vimont
c610a6b3c7
Document scrcpy via SSH tunnel in README
2019-11-19 22:23:08 +01:00
Romain Vimont
704c0ff4dd
Document copy-paste and --prefer-text in README
2019-11-19 22:23:08 +01:00
Romain Vimont
b145b8d5f4
Reorganize features in README
2019-11-19 22:23:08 +01:00
Romain Vimont
213c468c20
Move workarounds to a separate class
...
Extract workarounds (currently only one) to a separate class to avoid
polluting the main code.
2019-11-19 22:23:08 +01:00
Romain Vimont
18f2e33a8b
Fix noconsole.exe
...
The linker flag "-mwindows" has no effect on my current MinGW.
Instead, passing "-Wl,--subsystem,windows" works.
Fixes <https://github.com/Genymobile/scrcpy/issues/691 >
2019-11-19 12:22:11 +01:00
Romain Vimont
601b0fecdd
Extract DEBUG flag in build_without_gradle.sh
2019-11-18 14:33:14 +01:00
Romain Vimont
7fd800d583
Generate VERSION_NAME in build_without_gradle.sh
...
Since commit b963a3b9d5 , the server uses
BuildConfig.VERSION_NAME.
Generate this field manually for building without gradle.
2019-11-18 14:32:07 +01:00
Romain Vimont
1d97d7213d
Add option --max-fps
...
Add an option to limit the capture frame rate. It only works for devices
with Android >= 10.
Fixes <https://github.com/Genymobile/scrcpy/issues/488 >
2019-11-17 22:10:39 +01:00
Romain Vimont
fb976816f9
Do not expose frame rate in ScreenEncoder
...
The KEY_FRAME_RATE parameter value is necessary for the configuration of
the encoder, but its actual value does not impact the frame rate (only
resources used by the encoder).
Therefore, it's an internal detail and should not be exposed by the
ScreenEncoder class.
2019-11-17 22:10:33 +01:00
Romain Vimont
1b78a77962
Fix error message
2019-11-17 22:08:34 +01:00
Romain Vimont
59073223aa
Update manpage for --window-borderless option
2019-11-15 18:59:47 +01:00
Romain Vimont
9fd7a80a89
Add option to specify the initial window size
...
Add --window-width and --window-height parameters.
If only one is provided, the other is computed so that the aspect ratio
is preserved.
2019-11-15 18:52:58 +01:00
Romain Vimont
b6e2f8ae00
Update manpage for --window-{x,y} options
2019-11-15 18:50:49 +01:00
Romain Vimont
771bd8404d
Do not write invalid packet duration
...
Configuration packets have no PTS. Do not compute a packet duration from
their PTS.
Fixes recording to mp4 on device rotation.
2019-11-13 16:14:46 +01:00
Romain Vimont
af3027a85b
Merge pull request #920 into dev
...
Compare server and client version at the start of scrcpy
2019-11-13 12:01:02 +01:00
Romain Vimont
aa0f77c898
Accept resize shortcuts on maximized window
...
Allow "resize to fit" and "resize to pixel-perfect" on maximized window:
restore the window to normal size then resize.
2019-11-11 21:49:23 +01:00