Romain Vimont
3e40b24737
Fix UHID_OUTPUT message parsing
...
The bounds check was incorrect.
Fixes #6415 <https://github.com/Genymobile/scrcpy/issues/6415 >
2025-10-09 09:35:14 +02:00
Romain Vimont
10a0974f43
Bump version to 3.3.3
2025-09-23 21:18:45 +02:00
Romain Vimont
be21e43be5
Fix frame leak on pending frame update
...
The previous pending frame was not unreferenced before referencing the
new one, causing frames to leak whenever a texture update failed
(typically on Windows when the window is minimized with D3D9).
Refs 6298ef095f
Fixes #4297 <https://github.com/Genymobile/scrcpy/issues/4297 >
Fixes #6357 <https://github.com/Genymobile/scrcpy/issues/6357 >
2025-09-23 21:18:45 +02:00
Romain Vimont
bfb0872493
Avoid resetting pending frame
...
The function update_texture() calls update_texture_internal() and falls
back to set_pending_frame() if it fails.
When the frame passed is the pending frame, call only the _internal()
version instead.
This will prevent issues with frame reference counts by ensuring the
source and destination frames are never the same.
Refs 6298ef095f
Refs #6357 <https://github.com/Genymobile/scrcpy/issues/6357 >
2025-09-23 21:18:08 +02:00
Romain Vimont
2506d1768b
Bump version to 3.3.2
2025-09-06 14:36:37 +02:00
Filip Buda
8057835a0d
Catch CTRL_BREAK_EVENT signal on Windows
...
This ensures the process can terminate properly when a CTRL_BREAK_EVENT
signal is sent programmatically.
PR #6244 <https://github.com/Genymobile/scrcpy/pull/6244 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2025-08-12 18:17:32 +02:00
Yan
e47529ab9c
Fix gl_context declared type
...
The field gl_context is initialized from SDL_GL_CreateContext(), which
returns a raw SDL_GLContext, not a pointer.
The type mismatch was silently ignored by SDL2 because SDL_GLContext
was defined as an alias to `void *` (in SDL3, it is instead an alias to
`struct SDL_GLContextState *`, so compilation fails).
Refs #3895 <https://github.com/Genymobile/scrcpy/pull/3895 >
PR #6259 <https://github.com/Genymobile/scrcpy/pull/6259 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2025-08-12 18:08:22 +02:00
Romain Vimont
eb576c44f8
Replace __WINDOWS__ by _WIN32
...
Replace the SDL2-specific preprocessor macro __WINDOWS__ by the
"standard" _WIN32 macro.
2025-07-17 18:23:25 +02:00
Romain Vimont
0522d02d40
Add missing includes
...
The headers were implicitly included recursively, but include them
explicitly.
2025-07-17 18:23:12 +02:00
Romain Vimont
30bfc80f9b
Fix style for 80-char limit
2025-07-17 13:20:45 +02:00
Romain Vimont
a79ddc35a7
Update platform-tools checksums
...
The release binaries of platform-tools_r36.0.0 have changed upstream.
Both releases versions are referenced from
<https://dl.google.com/android/repository/repository2-2.xml >
Refs #6214 <https://github.com/Genymobile/scrcpy/issues/6214 >
Refs <https://issuetracker.google.com/issues/431119334 >
2025-07-17 13:20:45 +02:00
Romain Vimont
04542a9f58
Fix window leak on icon error
2025-07-17 13:19:15 +02:00
Romain Vimont
8761dcb7a8
Fix SDL dependency script error message
...
Commit 360936248c mistakenly left an
additional 'H' when replacing $HOST with $DIRNAME.
Refs <https://github.com/Genymobile/scrcpy/pull/6216#issuecomment-3076069802 >
2025-07-16 19:09:47 +02:00
Romain Vimont
5b18ce0d2e
Bump version to 3.3.1
2025-06-20 19:54:16 +02:00
Romain Vimont
4841fdd1ef
Add horizontal scrolling support for HID mouse
...
PR #6172 <https://github.com/Genymobile/scrcpy/pull/6172 >
2025-06-20 19:54:16 +02:00
Romain Vimont
fc75319bb2
Fix HID mouse support with SDL precise scrolling
...
Over HID, only integral scroll values can be sent. When SDL precise
scrolling is active, scroll events may include fractional values (e.g.,
0.05), which are truncated to 0 in the HID event.
To fix the problem, use the integral scroll value reported by SDL, which
internally accumulates fractional deltas.
Fixes #6156 <https://github.com/Genymobile/scrcpy/issues/6156 >
PR #6172 <https://github.com/Genymobile/scrcpy/pull/6172 >
2025-06-20 19:54:16 +02:00
Romain Vimont
7c8bdccbdc
Extend value range for SDK mouse scrolling
...
SDL precise scrolling can sometimes produce values greater than 1 or
less than -1.
On the wire, the value is encoded as a 16-bit fixed-point number.
Previously, the range was interpreted as [-1, 1], using 1 bit for the
integral part (the sign) and 15 bits for the fractional part.
To support larger values, interpret the range as [-16, 16] instead,
using 5 bits for the integral part and 11 bits for the fractional part
(which is more than enough).
PR #6172 <https://github.com/Genymobile/scrcpy/pull/6172 >
2025-06-20 19:54:16 +02:00
Romain Vimont
9787fe5d26
Preserve original scroll values in mouse event
...
Clamp scroll values to [-1, 1] only for the SDK mouse.
HID mouse implementations perform their own clamping to [-127, 127] (in
hid_mouse.c).
PR #6172 <https://github.com/Genymobile/scrcpy/pull/6172 >
2025-06-20 18:30:50 +02:00
berk ziya
38256d8ff9
Fix deprecated brew command
...
`brew cask` is an outdated command, replaced by `brew install --cask`.
Refs #5398 <https://github.com/Genymobile/scrcpy/pull/5398 >
PR #6149 <https://github.com/Genymobile/scrcpy/pull/6149 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2025-06-12 15:30:04 +02:00
Romain Vimont
dc169e425e
Bump version to 3.3
2025-06-11 19:39:48 +02:00
Romain Vimont
454beaa757
Upgrade libusb (1.0.29)
2025-06-11 19:39:02 +02:00
Romain Vimont
1a9ffb3814
Upgrade SDL (2.32.8)
2025-06-11 19:38:29 +02:00
Romain Vimont
ac16be54c8
Upgrade platform-tools (36.0.0)
2025-06-11 19:36:22 +02:00
Colin Kinloch
d2cc930975
Add app name SDL hint
...
This allows pulseaudio to label the audio stream "scrcpy" rather than
"SDL Application".
PR #6107 <https://github.com/Genymobile/scrcpy/pull/6107 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2025-06-05 19:59:59 +02:00
Romain Vimont
70bfa2cf39
Remove useless flag in zsh completion script
...
The -N flag is only useful after a pattern section (-p) to switch back
to listing command names.
Refs <https://zsh.sourceforge.io/Doc/Release/Completion-System.html >
2025-05-22 20:00:58 +02:00
hltdev8642
38f779d9d3
Escape parentheses in zsh completion script
...
PR #6079 <https://github.com/Genymobile/scrcpy/pull/6079 >
Co-authored-by: Romain Vimont <rom@rom1v.com >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2025-05-22 20:00:53 +02:00
Romain Vimont
1a0d300786
Add missing --screen-off-timeout doc in manpage
...
Refs eff5b4b219
2025-04-14 18:07:37 +02:00
Romain Vimont
d2447b5c19
Fix --screen-off-timeout bash completion
...
Only the option must be auto-completed, not its value.
2025-04-14 18:05:08 +02:00
Romain Vimont
882003f314
Fix segfault on SDL event without window
...
Since #5804 , controls have been enabled even with --no-window. As a
result, the Android clipboard is synchronized with the computer, causing
SDL to trigger an SDL_CLIPBOARDUPDATE event.
This event is ignored by scrcpy, but it was still transmitted to the
sc_screen instance, even if it had not been initialized.
Fix the issue by calling sc_screen_handle_event() only when a screen
instance exists.
Refs #5804 <https://github.com/Genymobile/scrcpy/pull/5804 >
Fixes #5970 <https://github.com/Genymobile/scrcpy/issues/5970 >
2025-04-03 08:15:55 +02:00
Romain Vimont
89b624770c
Bump version to 3.2
2025-03-29 15:45:28 +01:00
Romain Vimont
79227af89f
Merge branch 'master' into release
2025-03-29 15:44:29 +01:00
Romain Vimont
5d12d9071d
Upgrade FFmpeg (7.1.1)
2025-03-29 15:34:48 +01:00
Romain Vimont
b7add42154
Upgrade SDL (2.32.2)
...
Also apply this additional patch to fix the build:
<6be87ceb33 >
2025-03-29 15:34:20 +01:00
Romain Vimont
dd1bfae4e0
Upgrade libusb (1.0.28)
2025-03-29 15:02:38 +01:00
Romain Vimont
bef2d8473b
Add more audio sources
...
Expose more audio sources from MediaRecorder.AudioSource.
Refs <https://developer.android.com/reference/android/media/MediaRecorder.AudioSource >
Fixes #5412 <https://github.com/Genymobile/scrcpy/issues/5412 >
Fixes #5670 <https://github.com/Genymobile/scrcpy/issues/5670 >
PR #5870 <https://github.com/Genymobile/scrcpy/pull/5870 >
2025-03-29 14:54:35 +01:00
Romain Vimont
3a0703f428
Handle audio stream discontinuities
...
The audio regulator assumed a continuous audio stream. But some audio
sources (like the "voice call" audio source) do not produce any packets
on silence, breaking this assumption.
Use PTS to detect such discontinuities.
PR #5870 <https://github.com/Genymobile/scrcpy/pull/5870 >
2025-03-29 14:54:35 +01:00
Romain Vimont
1d25338119
Report underflow samples in verbose mode
...
Report the number of silence samples inserted due to underflow every
second, along with the other metrics.
PR #5870 <https://github.com/Genymobile/scrcpy/pull/5870 >
2025-03-29 14:40:52 +01:00
Romain Vimont
457c7fe5cf
Disable audio regulator underflow logs
...
Only enable them if SC_AUDIO_REGULATOR_DEBUG is set, as they may spam
the output.
PR #5870 <https://github.com/Genymobile/scrcpy/pull/5870 >
2025-03-29 14:39:43 +01:00
chengjian.scj
fd8bef68b7
Add --display-ime-policy option
...
Add an option to select where the IME should be displayed.
Possible values are "local", "fallback" and "hide".
PR #5703 <https://github.com/Genymobile/scrcpy/pull/5703 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2025-02-22 11:05:22 +01:00
Sam Listopad II
986328ff9e
Allow controls with --no-window
...
Without a window, mouse and keyboard events may not be received, but
the control channel is still necessary for other features:
* --turn-screen-off
* --stay-awake
* --show-touches
* --power-off-on-close
* --start-app
Fixes #5803 <https://github.com/Genymobile/scrcpy/issues/5803 >
PR #5804 <https://github.com/Genymobile/scrcpy/pull/5804 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2025-01-31 10:11:17 +01:00
Romain Vimont
cac8e9c821
Happy new year 2025!
2025-01-01 15:01:18 +01:00
Romain Vimont
af15c72f9c
Cleanup includes
...
Improved manually with the help of neovim LSP warnings and iwyu:
iwyu -Ibuilddir/app/ -Iapp/src/ app/src/XXX.c
2024-12-23 12:19:47 +01:00
Romain Vimont
fb47b87eeb
Fix pipe read return value
...
The function incorrectly returned false, whereas its return type is
ssize_t.
2024-12-20 20:57:20 +01:00
Colin Kinloch
ec4e826976
Set icon and server env paths for meson devenv
...
This allows users to compile and run the project in a dev environment.
meson setup x
meson compile -C x
meson devenv -C x
scrcpy
This is an alternative to `./run x`.
PR #5658 <https://github.com/Genymobile/scrcpy/pull/5658 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2024-12-12 18:15:26 +01:00
Romain Vimont
17e205e54f
Replace meson join_paths() by '/'
...
A new '/' operator was introduced in Meson 0.49 to replace join_paths():
- <https://mesonbuild.com/Reference-manual_functions.html#join_paths >
- <https://mesonbuild.com/Syntax.html#string-path-building >
Refs #5658 <https://github.com/Genymobile/scrcpy/pull/5658 >
2024-12-12 18:15:26 +01:00
Romain Vimont
754f4fc6fe
Bump version to 3.1
2024-12-09 22:29:51 +01:00
Romain Vimont
aca6d30af5
Include dav1d in releases
...
Scrcpy supports AV1, but no decoder was provided in binary releases.
Include dav1d:
- <https://www.videolan.org/projects/dav1d.html >
- <https://code.videolan.org/videolan/dav1d >
Fixes #4744 <https://github.com/Genymobile/scrcpy/issues/4744 >
PR #5644 <https://github.com/Genymobile/scrcpy/pull/5644 >
2024-12-09 19:07:18 +01:00
Romain Vimont
f2018e026c
Remove broken macOS flags
...
Due to a typo (a space was missing before the second '-L'), the
resulting LDFLAGS value was broken:
"-L/opt/homebrew/opt/zlib/lib-L/opt/homebrew/opt/libiconv/lib"
This proves that the flag was useless. Remove it.
Refs #5517 comment <https://github.com/Genymobile/scrcpy/pull/5517#issuecomment-2495522201 >
PR #5644 <https://github.com/Genymobile/scrcpy/pull/5644 >
2024-12-09 19:07:03 +01:00
Romain Vimont
65256d7cc7
Upgrade SDL (2.30.10)
2024-12-08 18:17:07 +01:00
Romain Vimont
328bb74f80
Log gamepad added/removed
...
Add a log when a gamepad is added or removed.
PR #5623 <https://github.com/Genymobile/scrcpy/pull/5623 >
2024-12-08 18:16:57 +01:00