Romain Vimont
39ff8d9900
Handle window resizing in screen
...
Only the screen knows what to do when the window is resized.
This paves the way to do other actions on window resizing.
2019-11-06 18:25:37 +01:00
Romain Vimont
683f7ca848
Document how to attach a debugger to the server
2019-11-03 19:42:37 +01:00
Romain Vimont
120f08ee96
Fix manpage option parameter format
...
The parameter for --window-title was not underlined the same way as
others.
2019-11-03 16:51:47 +01:00
Romain Vimont
0415672a75
Merge branch 'master' into dev
2019-11-03 15:56:10 +01:00
Romain Vimont
3ea4742321
Call ninja without changing directory
...
In build instructions, use:
ninja -Cx ...
instead of:
cd x
ninja ...
2019-10-31 21:05:04 +01:00
Romain Vimont
95fd64b5de
Add scrcpy version in recorded video metadata
...
It might help to understand problems in recorded videos.
2019-10-31 20:57:57 +01:00
Romain Vimont
ab205084dc
Merge pull request #896 from yangfl/upstream
...
Add manpage for scrcpy
2019-10-31 13:44:01 +01:00
Romain Vimont
3da95b52bd
Rename scrcpy-server.jar to scrcpy-server
...
The server name ending with .jar has several drawbacks:
- meson requires the jar executable to attempt to modify it:
<https://github.com/Genymobile/scrcpy/issues/404#issuecomment-456065923 >
<https://github.com/mesonbuild/meson/issues/4844 >
- meson warns during "ninja install"
<https://github.com/Genymobile/scrcpy/issues/458 >
- some users try to execute it on the computer as a java executable
Removing the extension solves all these problems.
2019-10-31 10:54:29 +01:00
Romain Vimont
c72f677435
Merge branch 'master' into dev
2019-10-30 23:29:44 +01:00
Romain Vimont
1380f6e00f
Fix help for --record-format
...
Record format requires a parameter.
2019-10-30 22:51:40 +01:00
Romain Vimont
d841718956
Add a script to build the server without gradle
...
Gradle versions may sometimes cause problems. This script offers an
alternative.
2019-10-30 21:47:20 +01:00
Romain Vimont
17d53be3ef
Fix mouse events conversion
...
The conversion from SDL mouse state to Android mouse state used wrong
constants as mask.
Fixes <https://github.com/Genymobile/scrcpy/issues/635 >
2019-10-25 11:09:06 +02:00
Romain Vimont
f9938dbf88
Inject button state for touch/mouse events
...
The buttons state was forwarded, but ignored by the server.
2019-10-25 11:04:04 +02:00
Romain Vimont
f6c8460ebb
Rename window size functions for clarity
...
Now, get_window_size() returns the current window size (fullscreen or
not), while get_windowed_window_size() always returned the windowed size
(the size when fullscreen is disabled).
2019-10-20 16:08:16 +02:00
Romain Vimont
c33a147fd0
Fix "turn screen off" on Android Q
...
Call getInternalDisplayToken(), which retrieve the id of the first
physical display (which is not necessarily 0 anymore).
Fixes <https://github.com/Genymobile/scrcpy/issues/835 >
2019-10-17 23:25:00 +02:00
Romain Vimont
8b33c6c108
Adapt copy-paste methods for Android 10
...
The methods getPrimaryClip() and setPrimaryClip() expect an additional
parameter since Android 10.
Fixes <https://github.com/Genymobile/scrcpy/issues/796 >.
2019-10-17 22:21:47 +02:00
Romain Vimont
5b7a0cd8e9
Extract String literal to static constant
2019-10-17 22:11:39 +02:00
Romain Vimont
bab9361948
Do not crash on control error
...
Some devices do not have some methods that we invoke via reflection, or
their call do not return the expected value. In that case, do not crash
the whole controller.
2019-10-17 22:09:54 +02:00
Romain Vimont
6220456def
Merge mouse and touch events
...
Both are handled the very same way on the device.
2019-10-03 20:37:49 +02:00
Romain Vimont
7e1d52c119
Rename "touch pointer" to "pointer"
...
There are only touch pointers now, mouse pointers have been removed.
2019-10-03 20:27:28 +02:00
Romain Vimont
280d5b718c
Use common pointers for mouse and touch
...
The mouse is a pointer like any other.
2019-10-03 20:05:29 +02:00
Romain Vimont
30168f0428
Ignore duplicate mouse events
...
In SDL, a touch event may simulate an identical mouse event. Since we
already handle touch event, ignore these duplicates.
2019-10-03 20:05:29 +02:00
Romain Vimont
b5a2d99bc2
Send touch events from the client
...
On SDL touch events, send control messages to the server.
2019-10-03 20:05:29 +02:00
Romain Vimont
f765aae352
Inject touch events on the server
...
On receiving an "inject touch" control message, update the local
pointers state and inject touches.
2019-10-03 20:05:29 +02:00
Romain Vimont
77f876e29c
Add "inject touch" control message
...
Add a control message type in the protocol to forward touch events to
the device.
2019-10-03 20:05:27 +02:00
Romain Vimont
d90549d1e6
Rename "pointer" to "mouse pointer"
...
This will help to distinguish them from "touch pointers".
2019-10-02 21:40:26 +02:00
Romain Vimont
810ff80ba7
Add buffer_write64be()
...
Add a function to write 64 bits in big-endian from a uint64_t.
2019-10-02 21:40:26 +02:00
Romain Vimont
1f8ba1ca79
Include config.h everywhere
...
Ref: <https://github.com/Genymobile/scrcpy/issues/829 >
Suggested-by: Louis Kruger <louisk@gmail.com >
2019-09-29 22:39:53 +02:00
Romain Vimont
f510f1de1c
Remove "make" from build dependencies
...
The project is built with meson+ninja.
2019-09-28 14:46:44 +02:00
Romain Vimont
7d1932b907
Fix gradle warnings in tests
2019-09-28 12:23:54 +02:00
Romain Vimont
ffdbf5990b
Rename event converter functions
...
Rename "XXX_from_sdl_to_android" to "convert_XXX", to avoid huge
function names.
2019-09-15 17:29:03 +02:00
Romain Vimont
9463850c24
Rename "convert.h" to "event_converter.h"
...
The filename gave no hint about what was converted.
2019-09-15 17:29:03 +02:00
Romain Vimont
6e38e0cbfe
Rename variable names "event" to "msg"
...
Some variable names had not been renamed when "event" was renamed to
"message" (28980bbc90 ).
2019-09-15 17:29:03 +02:00
Romain Vimont
7040e8abc4
Fix control message reader test
...
The mouse event test actually tested a key event control message.
2019-09-15 17:29:03 +02:00
Romain Vimont
da5b0ec0d5
Improve FAQ
2019-08-14 22:32:46 +02:00
Romain Vimont
a9c8fa305d
Fix segfault on recording with old FFmpeg
...
The AVPacket fields side_data and side_data_elems were not initialized
by av_packet_ref() in old FFmpeg versions (prior to [1]).
As a consequence, on av_packet_unref(), side_data was freed, causing a
segfault.
Fixes <https://github.com/Genymobile/scrcpy/issues/707 >
[1]: <http://git.videolan.org/gitweb.cgi/ffmpeg.git/?p=ffmpeg.git;a=commitdiff;h=3b4026e15110547892d5d770b6b43c9e34df458f >
2019-08-13 18:58:36 +02:00
Romain Vimont
20b3f101a4
Print gradle output on compiling
...
Enable the attribute "console" of custom_target() introduced in meson
0.48. This allows to get a feedback of what gradle does (which can takes
a very long time).
This produces warnings because we declare to support meson >= 0.37, but
we don't want to stop supporting older versions for that. Older versions
just ignore the option:
> WARNING: Unknown keyword arguments in target scrcpy-server: console
Newer meson versions use it, but warn because we declare supporting
older versions:
> WARNING: Project targetting '>= 0.37' but tried to use feature
> introduced in '0.48.0': console arg in custom_target
Meson does not support conditional branches to suppress such warnings,
so just keep the warnings.
2019-08-09 15:15:28 +02:00
Romain Vimont
686733023b
Merge pull request #708 from toddsierens/patch-1
...
Update WindowManager.java
2019-08-08 23:24:47 +02:00
Romain Vimont
8507fea271
Record a packet with its duration
...
Record a packet only once the following has been received, so that we
can set its duration before muxing it.
Fixes <https://github.com/Genymobile/scrcpy/issues/702 >
2019-08-08 18:57:52 +02:00
Romain Vimont
8a08ca0f3d
Merge pull request #692 from msfjarvis/msf/uprev-dependencies
...
Upgrade build dependencies
2019-08-07 23:42:06 +02:00
Romain Vimont
9a50b65b33
Merge pull request #695 from schwabe/schwabe/fix_null_queue
...
Fix building on OS X (missing NULL in queue.h)
2019-08-05 15:26:06 +02:00
Romain Vimont
9bcee4ea42
Update links to v1.10 in README and BUILD
2019-08-04 22:03:45 +02:00
Romain Vimont
c28619e4e8
Bump version to 1.10
2019-08-04 16:41:04 +02:00
Romain Vimont
8969444ff2
List scrcpy characteristics in README
...
They were listed in the blog post introducing scrcpy:
<https://blog.rom1v.com/2018/03/introducing-scrcpy/ >
2019-08-04 16:23:42 +02:00
Romain Vimont
b54f0bfe48
Upgrade SDL (2.0.10) for Windows
...
Include the latest version of SDL in Windows releases.
2019-08-04 16:23:42 +02:00
Romain Vimont
0aec1e502e
Update platform-tools (29.0.2) for Windows
...
Include the latest version of adb in Windows releases.
2019-08-04 16:23:42 +02:00
Romain Vimont
c3a58ad10f
Upgrade FFmpeg (4.1.4) for Windows
...
Include the latest version of FFmpeg in Windows releases.
2019-08-04 16:23:42 +02:00
Romain Vimont
b0184f2869
Initialize queue "last" field
...
The compiler is not always able to see that "last" is always initialized
before being used, so always initialize it.
2019-08-04 16:22:39 +02:00
Romain Vimont
e2ac996183
Use Cmd instead of Ctrl on macOS when possible
...
Fixes <https://github.com/Genymobile/scrcpy/issues/642 >
2019-08-03 23:13:44 +02:00
Romain Vimont
5e4ccfd832
Use generic FIFO queue for recording
...
Replace the specific recording queue by the new generic FIFO queue
implementation.
2019-08-01 23:15:47 +02:00
Romain Vimont
53b6ee2cf4
Add generic intrusive FIFO queue
...
We need several FIFO queues (a queue of packets, a queue of messages,
etc.).
Some of them are implemented using cbuf, a generic circular buffer. But
for recording, we need to store the packets in an unbounded queue until
they are written, so the queue was implemented manually.
Create a generic implementation (using macros) to avoid reimplementing
it every time.
2019-08-01 23:14:50 +02:00
Romain Vimont
26213f1031
Fix cbuf documentation
2019-08-01 22:50:03 +02:00
Romain Vimont
96b5067cbf
Remove unnecessary backslash in cbuf
2019-08-01 22:08:34 +02:00
Romain Vimont
421e4be399
Remove root directory from Windows zip releases
...
Put the scrcpy files at the root of the zip archive. This avoids an
unnecessary level of directories when extracting.
2019-07-31 16:35:14 +02:00
Romain Vimont
6abb4902c6
Log recording failure
...
If recording fails, log "recording failed" instead of "recording
complete".
2019-07-31 11:04:38 +02:00
Romain Vimont
d4ed8b6f26
Log scrcpy version and URL on start
...
Keep --version which also print the version of dependencies.
2019-07-31 01:55:43 +02:00
Romain Vimont
35d9185f6c
Record asynchronously
...
The record file was written from the stream thread. As a consequence,
any blocking I/O to write the file delayed the decoder.
For maximum performance even when recording is enabled, send
(refcounted) packets to a separate recording thread.
2019-07-31 01:55:40 +02:00
Romain Vimont
63af7fbafe
Reduce latency by 1 frame
...
To packetize the H.264 raw stream, av_parser_parse2() (called by
av_read_frame()) knows that it has received a full frame only after it
has received some data for the next frame. As a consequence, the client
always waited until the next frame before sending the current frame to
the decoder!
On the device side, we know packets boundaries. To reduce latency,
make the device always transmit the "frame meta" to packetize the stream
manually (it was already implemented to send PTS, but only enabled on
recording).
On the client side, replace av_read_frame() by manual packetizing and
parsing.
<https://stackoverflow.com/questions/50682518/replacing-av-read-frame-to-reduce-delay >
<https://trac.ffmpeg.org/ticket/3354 >
2019-07-31 01:55:32 +02:00
Romain Vimont
a90ccbdf3b
Add option to change the push target
...
A drag & drop always pushed the file to /sdcard/.
Add an option to customize the target directory.
Fixes <https://github.com/Genymobile/scrcpy/issues/659 >
2019-07-31 01:53:16 +02:00
Romain Vimont
ca970e8aa6
Merge branch 'master' into dev
2019-07-31 00:14:17 +02:00
Romain Vimont
6b3d9e3eab
Add unit test for device message serialization
...
There was a test for the deserialization, but not for the serialization.
2019-07-30 12:17:33 +02:00
Romain Vimont
02692ffa42
Rename "build_" to "compile_"
...
Recent versions of meson complain about an option having name starting
with "build_":
> DEPRECATION: Option uses prefix "build_", which is reserved for Meson.
> This will become an error in the future.
Use "compile_" instead.
2019-07-29 15:19:07 +02:00
Romain Vimont
9dea6d2384
Add me as copyright owner
2019-07-29 14:59:44 +02:00
Romain Vimont
3c55d0c69b
Fix double-free on error
...
If writing the recording header fails, do not clean the resources
immediately to avoid double-free.
2019-07-12 21:07:06 +02:00
Romain Vimont
4961256123
Close decoder on stream ended
...
Add missing call to decoder_close().
2019-06-26 23:50:39 +02:00
Romain Vimont
e4ac943d86
Document --window-title in README
2019-06-24 21:37:38 +02:00
Romain Vimont
4b997239f3
Merge pull request #614 from beango1:window-title-simple
...
add option window-title to set the title
2019-06-24 21:32:45 +02:00
Romain Vimont
056e47e752
Replace "cannot" by "could not"
2019-06-23 20:52:03 +02:00
Romain Vimont
439b009a79
Fix expected parameters count in error message
2019-06-23 20:47:21 +02:00
Romain Vimont
91ecb4f218
Close socket on error
...
Suggested-by: barry-ran
<https://github.com/Genymobile/scrcpy/issues/607 >
2019-06-20 12:15:45 +02:00
Romain Vimont
bfb3f0842f
Prevent to turn screen off if no control
...
If --no-control is set, then the controller is not initialized (both in
the client and the server), so it is not possible to control the device
to turn its screen off.
See <https://github.com/Genymobile/scrcpy/issues/608 >.
2019-06-20 10:59:19 +02:00
Romain Vimont
87d7a157a9
Reference USBaudio from README
2019-06-20 10:47:02 +02:00
Romain Vimont
b91ecf5225
Fix --serial help
...
Make explicit that --serial excepts a parameter.
2019-06-18 17:13:53 +02:00
Romain Vimont
1807de4955
Merge pull request #595 from taaem/fix_build_fedora
...
The Java JDK is needed to build the server
2019-06-15 15:14:22 +02:00
Romain Vimont
4940746bcb
Remove useless else
...
The if-block ends with a return.
2019-06-14 10:15:53 +02:00
Romain Vimont
fe758e6e15
Improve comment
...
Rephrase to simplify and add a link to the issue.
2019-06-14 10:11:15 +02:00
Romain Vimont
b29a568f08
Merge pull request #587 from schwabe/fix_586_screen_off_qbeta
...
Use getPhysicalDisplayToken if getBuiltInDisplay is not found
2019-06-14 10:04:12 +02:00
Romain Vimont
8ca36406b9
Remove compilation flag "skip_frames"
...
It is unused since ebccb9f6cc .
2019-06-12 11:43:18 +02:00
Romain Vimont
53310a925a
Disable portable build by default
...
The default value of a boolean meson option is true. We want
non-portable build by default.
2019-06-12 11:26:23 +02:00
Romain Vimont
0cb902d58b
Merge pull request #587 from zzndb/patch-1
2019-06-12 11:23:15 +02:00
Romain Vimont
de2016a48e
Add link to Snap package in README
...
<https://github.com/Genymobile/scrcpy/issues/523 >
2019-06-11 23:41:56 +02:00
Romain Vimont
19ca6a0d66
Fix typo in README
2019-06-11 23:01:23 +02:00
Romain Vimont
e2996e85c0
Update links to v1.9 in README and BUILD
2019-06-11 23:00:09 +02:00
Romain Vimont
c2df0228a3
Merge branch 'dev'
2019-06-11 22:54:58 +02:00
Romain Vimont
259d3aee93
Bump version to 1.9
2019-06-11 21:50:29 +02:00
Romain Vimont
90859f1dcf
Upgrade tarketSdkVersion to 29
...
This fixes a lint warning.
2019-06-11 21:49:14 +02:00
Romain Vimont
1afe9ce2ee
Fix deprecation warning in Java unit test
2019-06-11 21:48:58 +02:00
Romain Vimont
273cec8a92
Fix typo in test name
2019-06-11 21:47:31 +02:00
Romain Vimont
02f189b1de
Remove obsolete detail in README
...
Now that scrcpy-server.jar is found in the same directory as the
scrcpy executable, using SCRCPY_SERVER_PATH is not particularly useful
on Windows anymore
2019-06-11 21:37:09 +02:00
Romain Vimont
4abe163233
Remove obsolete explanation in FAQ
...
Issue 9 was about stdout/stderr not printed in Windows console. This is
solved since the Windows version is cross-compiled from Linux.
2019-06-11 21:20:06 +02:00
Romain Vimont
5ffdcbb7be
Update DEVELOP.md
2019-06-11 21:18:43 +02:00
Romain Vimont
ffe0417228
Update platform-tools (29.0.1) for Windows
...
Include the latest version of adb in Windows releases.
2019-06-11 19:19:47 +02:00
Romain Vimont
e3afb67e7f
Downgrade SDL to 2.0.8 for Windows
...
Revert "Update SDL (2.0.9) for Windows"
Several users experienced freezes with SDL 2.0.9.
This reverts commit a5787dccd6 .
See:
- <https://github.com/Genymobile/scrcpy/issues/425 >
- <https://discourse.libsdl.org/t/unstable-frame-rate-unexpectedly/25783 >
2019-06-11 19:18:45 +02:00
Romain Vimont
4ee1391361
Upgrade FFmpeg (4.1.3) for Windows
...
Include the latest version of FFmpeg in Windows releases.
2019-06-11 19:18:45 +02:00
Romain Vimont
2755bfc255
Improve portable builds
...
In portable builds, scrcpy-server.jar was supposed to be present in the
current directory, so in practice it worked only if scrcpy was launched
from its own directory.
Instead, find the absolute path of the executable and build a suitable
path to use scrcpy-server.jar from the same directory.
2019-06-11 17:44:07 +02:00
Romain Vimont
3b17ff7c86
Add functions to convert wide char to UTF-8
...
There was already utf8_to_wide_char(), used to correctly execute
commands on Windows.
Add the reverse converter: utf8_from_wide_char(). We will need it to
build the scrcpy-server path based on the executable directory.
2019-06-11 17:44:07 +02:00
Romain Vimont
4eb6b26c93
Extract "scrcpy-server.jar" string
...
The filename is used at several places.
2019-06-11 17:44:07 +02:00
Romain Vimont
eb34098add
Simplify portable build configuration
...
To create a portable build (with scrcpy-server.jar accessible from the
scrcpy directory), replace OVERRIDE_SERVER_PATH by a simple compilation
flag: PORTABLE.
This paves the way to use more complex rules to determine the path of
scrcpy-server.jar in portable builds.
2019-06-11 17:44:07 +02:00
Romain Vimont
b777760bca
Simplify scrcpy-server path configuration
...
The full path of scrcpy-server.jar was partially configured from
meson.build then concatenated by C code.
Instead, directly write the path in C.
2019-06-11 17:44:07 +02:00
Romain Vimont
72bdfbc7a6
Never return 0 for stream protocol
...
On socket disconnection, on Linux, recv() returns -1 and errno is set.
But on Windows, errno is 0.
In that case, AVERROR(errno) == 0, leading to the warning:
> Invalid return value 0 for stream protocol
To avoid the problem, if errno is 0, return AVERROR_EOF.
Ref: commit 2876463d39
2019-06-11 17:44:07 +02:00