Frank Leon Rose
aaf7875d92
Ensure get_server_path() retval is freeable
...
PR #2276 <https://github.com/Genymobile/scrcpy/pull/2276 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-04-22 22:12:23 +02:00
brunoais
b9c3f65fd8
Provide actions for the extra mouse buttons
...
Bind APP_SWITCH to button 4 and expand notification panel on button 5.
PR #2258 <https://github.com/Genymobile/scrcpy/pull/2258 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-04-19 20:16:45 +02:00
Romain Vimont
d0739911a3
Forward DOWN and UP separately for right-click
...
The shortcut "back on screen on" is a bit special: the control is
requested by the client, but the actual event injection (POWER or BACK)
is determined on the device.
To properly inject DOWN and UP events for BACK, transmit the action as
a control parameter.
If the screen is off:
- on DOWN, inject POWER (DOWN and UP) (wake up the device immediately)
- on UP, do nothing
If the screen is on:
- on DOWN, inject BACK DOWN
- on UP, inject BACK UP
A corner case is when the screen turns off between the DOWN and UP
event. In that case, a BACK UP event will be injected, so it's harmless.
As a consequence of this change, the BACK button is now handled by
Android on mouse released. This is consistent with the keyboard shortcut
(Mod+b) behavior.
PR #2259 <https://github.com/Genymobile/scrcpy/pull/2259 >
Refs #2258 <https://github.com/Genymobile/scrcpy/pull/2258 >
2021-04-19 20:16:45 +02:00
Andrea Gelmini
498ad23e98
Fix typos
...
PR #2263 <https://github.com/Genymobile/scrcpy/pull/2263 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-04-18 14:36:31 +02:00
Romain Vimont
964b6d2243
Forward DOWN and UP separately for middle-click
...
As a consequence of this change, the HOME button is now handled by
Android on mouse released. This is consistent with the keyboard shortcut
(MOD+h) behavior.
PR #2259 <https://github.com/Genymobile/scrcpy/pull/2259 >
Refs #2258 <https://github.com/Genymobile/scrcpy/pull/2258 >
2021-04-17 18:04:24 +02:00
Romain Vimont
8cc057c8f1
Prevent forwarding only "mouse released" events
...
Some mouse clicks DOWN are captured for shortcuts, but the matching UP
events were still forwarded to the device.
Instead, capture both DOWN and UP for shortcuts, and do nothing on UP.
PR #2259 <https://github.com/Genymobile/scrcpy/pull/2259 >
Refs #2258 <https://github.com/Genymobile/scrcpy/pull/2258 >
2021-04-17 18:04:13 +02:00
Romain Vimont
edee69d637
Fix options alphabetical order
...
"verbosity" < "version"
2021-04-16 17:40:39 +02:00
Romain Vimont
8ef4c044fa
Do not forward SDL_DROPFILE event
...
The event is handled by scrcpy.c, it is not necessary to send it to
screen or input_manager.
2021-04-13 22:37:08 +02:00
Romain Vimont
c23c38f99d
Move resizing workaround to screen.c
2021-04-13 22:36:59 +02:00
Romain Vimont
65c4f487b3
Set initial fullscreen from screen.c
2021-04-13 22:15:05 +02:00
Romain Vimont
c6d7f5ee96
Make screen_show_window() static
...
It is only used from screen.c now.
2021-04-13 22:04:38 +02:00
Romain Vimont
28f6cbaea6
Destroy screen once stream is finished
...
The screen receives callbacks from the decoder, fed by the stream.
The decoder is run from the stream thread, so waiting for the end of
stream is sufficient to avoid possible use-after-destroy.
2021-04-11 14:42:09 +02:00
Romain Vimont
08fc6694e1
Do not destroy uninitialized screen
...
When --no-display was passed, screen_destroy() was called while
screen_init() was never called.
In practice, it did not crash because it just freed NULL pointers, but
it was still incorrect.
2021-04-11 13:07:44 +02:00
Romain Vimont
d0983db592
Make internal recorder function static
2021-04-10 18:48:52 +02:00
Romain Vimont
fb7870500a
Remove unused field from input_manager
2021-04-10 18:48:52 +02:00
Romain Vimont
33006561c7
Remove useless forward declaration from stream.h
2021-04-10 18:48:52 +02:00
Romain Vimont
a09733d175
Remove useless includes from decoder.c
2021-04-10 18:48:44 +02:00
Romain Vimont
07a85b7c94
Fix typo in command-line help
...
Refs #2237 <https://github.com/Genymobile/scrcpy/issues/2237 >
2021-04-07 15:12:33 +02:00
Romain Vimont
6231f683af
Fix compilation error for old decoding API
...
Commits cb9c42bdcb
and
441d3fb119
updated the code only for the
new decoding API.
2021-04-05 22:35:14 +02:00
Romain Vimont
9826c5c4a4
Remove HiDPI compilation flag
...
Always enable HiDPI support, there is no reason to expose a compilation
flag.
2021-04-04 15:00:13 +02:00
Romain Vimont
2812de8a9a
Update brew java version to JDK 11
...
Refs f8524a2be7
Refs 7b51a0313e
2021-04-04 14:39:16 +02:00
quyleanh
d50c678a5f
Update brew cask documentation
...
The command `brew cask` has been deprecated:
<https://github.com/Homebrew/discussions/discussions/340#discussioncomment-232364 >
Should be `brew install` directly now.
PR #2231 <https://github.com/Genymobile/scrcpy/pull/2231 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-04-04 14:38:54 +02:00
Romain Vimont
b77932a5b7
Add instructions to uninstall
2021-04-01 09:47:15 +02:00
Romain Vimont
47d16a57ac
Add simplified installation script
...
Add a script to download the server and build scrcpy using the
prebuilt server.
2021-03-29 09:33:39 +02:00
Ray Foss
fc5de88eaa
Clarify the order of operations in BUILD.md
...
PR #2223 <https://github.com/Genymobile/scrcpy/pull/2223 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-03-29 09:28:08 +02:00
Romain Vimont
fda293f9bb
Fix BUILD.md line wrapping
2021-03-29 09:11:40 +02:00
Romain Vimont
38f392f08f
Fix typo in BUILD.md
2021-03-29 08:39:02 +02:00
Romain Vimont
8414b688f0
Link release to main README in translations
...
This avoids to link an older version.
2021-03-28 21:36:00 +02:00
aruko-210
6a217b70f4
Add Japanese translation for README.md
...
PR #2195 <https://github.com/Genymobile/scrcpy/pull/2195 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-03-28 21:28:20 +02:00
Romain Vimont
3a4b10a38d
Improve --push-target example in README
...
A common use case for the --push-target option is to pass the device
Download directory.
2021-03-28 12:25:08 +02:00
Romain Vimont
1fb7957525
Fix typo in README
...
Refs <https://github.com/Genymobile/scrcpy/pull/2195#discussion_r595664697 >
2021-03-17 08:52:16 +01:00
Romain Vimont
19ad107f1f
Add "Get the app" summary section
...
Give quick instructions to download/install scrcpy.
2021-03-16 21:43:52 +01:00
Yu-Chen Lin
1d615a0d51
Support power off on close
...
PR #824 <https://github.com/Genymobile/scrcpy/pull/824 >
Signed-off-by: Yu-Chen Lin <npes87184@gmail.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-03-16 21:12:35 +01:00
Yu-Chen Lin
fb0bcaebc2
Export static method to power off screen in Device
...
PR #824 <https://github.com/Genymobile/scrcpy/pull/824 >
Signed-off-by: Yu-Chen Lin <npes87184@gmail.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-03-16 21:12:29 +01:00
slingmint
dd453ad041
Pass scrcpy-noconsole arguments through to scrcpy
...
PR #2052 <https://github.com/Genymobile/scrcpy/pull/2052 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-03-16 21:04:04 +01:00
Romain Vimont
0308ef43f2
Do not set buttons on touch events
...
BUTTON_PRIMARY must not be set for touch events:
> This button constant is not set in response to simple touches with a
> finger or stylus tip. The user must actually push a button.
<https://developer.android.com/reference/android/view/MotionEvent#BUTTON_PRIMARY >
Fixes #2169 <https://github.com/Genymobile/scrcpy/issues/2169 >
2021-03-15 18:46:56 +01:00
Romain Vimont
40febf4a91
Use device id 0 for touch/mouse events
...
Virtual device is only for keyboard sources, not mouse or touchscreen
sources. Here is the value of InputDevice.getDevice(-1).toString():
Input Device -1: Virtual
Descriptor: ...
Generation: 2
Location: built-in
Keyboard Type: alphabetic
Has Vibrator: false
Has mic: false
Sources: 0x301 ( keyboard dpad )
InputDevice.getDeviceId() documentation says:
> An id of zero indicates that the event didn't come from a physical
> device and maps to the default keymap.
<https://developer.android.com/reference/android/view/InputEvent#getDeviceId() >
However, injecting events with a device id of 0 causes event.getDevice()
to be null on the client-side.
Commit 26529d377f
used -1 as a workaround
to avoid a NPE on a specific Android TV device. But this is a bug in the
device system, which wrongly assumes that input device may not be null.
A similar issue was present in Flutter, but it is now fixed:
- <https://github.com/flutter/flutter/issues/30665 >
- <https://github.com/flutter/engine/pull/7986 >
On the other hand, using an id of -1 for touchscreen events (which is
invalid) causes issues for some apps:
<https://github.com/Genymobile/scrcpy/issues/2125#issuecomment-790535792 >
Therefore, use a device id of 0.
An alternative could be to find an existing device matching the source,
like "adb shell input" does. See getInputDeviceId():
<https://android.googlesource.com/platform/frameworks/base.git/+/master/cmds/input/src/com/android/commands/input/Input.java >
But it seems better to indicate that the event didn't come from a
physical device, and it would not solve #962 anyway, because an Android
TV has no touchscreen.
Refs #962 <https://github.com/Genymobile/scrcpy/issues/962 >
Fixes #2125 <https://github.com/Genymobile/scrcpy/issues/2125 >
2021-03-14 18:30:56 +01:00
Romain Vimont
429fdef04f
Fix encoder parameter suggestion
...
The option is --encoder, not --encoder-name.
2021-03-11 10:55:12 +01:00
Biswapriyo Nath
d1789f082a
meson: Do not use full path with mingw tools name
...
This helps to use mingw toolchains which are not in /usr/bin path.
PR #2185 <https://github.com/Genymobile/scrcpy/pull/2185 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-03-09 09:59:57 +01:00
Romain Vimont
eb7e1070cf
Release frame data as soon as possible
...
During a frame swap, one of the two frames involved can be released.
2021-03-06 22:58:03 +01:00
Romain Vimont
386f017ba9
Factorize frame swap
2021-03-06 22:58:03 +01:00
Romain Vimont
cc48b24324
Simplify screen initialization
...
Use a single function to initialize the screen instance.
2021-03-06 22:58:03 +01:00
Romain Vimont
597c54f049
Group screen parameters into a struct
...
The function screen_init_rendering had too many parameters.
2021-03-06 22:58:03 +01:00
Romain Vimont
955da3b578
Remove screen static initializer
...
Most of the fields are initialized dynamically.
2021-03-06 22:58:03 +01:00
Romain Vimont
cb9c42bdcb
Use a callback to notify frame skip
...
A skipped frame is detected when the producer offers a frame while the
current pending frame has not been consumed.
However, the producer (in practice the decoder) is not interested in the
fact that a frame has been skipped, only the consumer (the renderer) is.
Therefore, notify frame skip via a consumer callback. This allows to
manage the skipped and rendered frames count at the same place, and
remove fps_counter from decoder.
2021-03-06 22:58:03 +01:00
Romain Vimont
fb9f9848bd
Use a callback to notify a new frame
...
Make the decoder independant of the SDL even mechanism, by making the
consumer register a callback on the video_buffer.
2021-03-06 22:58:03 +01:00
Romain Vimont
c50b958ee4
Initialize screen before starting the stream
...
As soon as the stream is started, the video buffer could notify a new
frame available.
In order to pass this event to the screen without race condition, the
screen must be initialized before the screen is started.
2021-03-06 22:58:03 +01:00
Romain Vimont
441d3fb119
Make video buffer more generic
...
Video buffer is a tool between a frame producer and a frame consumer.
For now, it is used between a decoder and a renderer, but in the future
another instance might be used to swscale decoded frames.
2021-03-06 22:58:03 +01:00
Romain Vimont
cb197ee3a2
Move fps counter out of video buffer
...
In order to make video buffer more generic, move out its specific
responsibility to count the fps between the decoder and the renderer.
2021-03-06 22:58:03 +01:00
Romain Vimont
dca11f6c51
Remove obsolete FAQ entry
...
Issue #15 had been fixed in v1.14 by
e40532a376
.
2021-03-06 14:28:06 +01:00