Romain Vimont
43f71abe80
sc_disconnect
2026-02-02 18:34:39 +01:00
Romain Vimont
1bbb0f2a26
push_event_with_data
2026-02-02 18:34:39 +01:00
Romain Vimont
2f282cf5c4
sc_texture_reset
2026-02-02 18:34:39 +01:00
Romain Vimont
ac82761932
icon-from-filename
2026-01-31 22:14:05 +01:00
Romain Vimont
0f93b7fea1
SCRCPY_ICON_DIR
2026-01-31 22:11:10 +01:00
Romain Vimont
aa2f826a9a
sc_file_build_path
2026-01-31 22:11:10 +01:00
Romain Vimont
9fb194c3ad
Rename icon.png to scrcpy.png
...
This makes the icon name consistent everywhere.
2026-01-31 22:11:10 +01:00
Romain Vimont
cf47819c18
sc_texture-in-otg
2026-01-31 22:11:10 +01:00
Romain Vimont
4c32823852
extract-rect-util
2026-01-31 22:11:10 +01:00
Romain Vimont
19c015dd91
do-not-fail-if-icon-fails
2026-01-31 22:11:08 +01:00
Romain Vimont
66dda394d7
rename display to texture
2026-01-31 21:38:32 +01:00
Romain Vimont
123df8e20e
set_texture_from_frame
2026-01-31 21:37:43 +01:00
Romain Vimont
ffc7847608
set_texture_from_surface
2026-01-31 21:37:40 +01:00
Romain Vimont
b8d25586bf
frect
2026-01-31 21:33:48 +01:00
Romain Vimont
73b503427c
render icon using common code can_upscale
2026-01-31 21:33:48 +01:00
Romain Vimont
57acb665c0
update_rect
2026-01-31 21:33:48 +01:00
Romain Vimont
665c586d76
render_output_size
2026-01-31 21:33:48 +01:00
Romain Vimont
b5580dd2e1
render_from_screen
2026-01-31 21:33:48 +01:00
Romain Vimont
71305012a0
fix_macos
2026-01-31 21:33:48 +01:00
Romain Vimont
9ca85aadef
Move renderer from sc_display to sc_screen
...
Make sc_screen the owner of both the SDL window and the SDL renderer.
This is the first step toward limiting the role of sc_display to texture
management.
2026-01-31 21:33:48 +01:00
Romain Vimont
3b13a68c7a
Simplify texture failure handling
...
When the scrcpy window is minimized on Windows with D3D9, texture
creation and updates fail.
As a workaround, a mechanism was implemented to reattempt applying the
requested changes.
Since SDL3 defaults to the D3D11 backend, remove this workaround,
which adds a lot of complexity for a backend that should almost never
be used.
However, do not close scrcpy when texture creation or updates fail; only
the frame should be lost.
Refs SDL/#7651 <https://github.com/libsdl-org/SDL/issues/7651 >
Refs #3947 <https://github.com/Genymobile/scrcpy/issues/3947 >
Refs 6298ef095f
2026-01-31 21:33:48 +01:00
Romain Vimont
362df5cc84
fix_window_condition
2026-01-31 21:33:40 +01:00
Romain Vimont
373b366fa5
Do not attempt to increase audio thread priority
...
In practice, this always fails for non-privileged processes.
2026-01-17 21:30:19 +01:00
Romain Vimont
5607f12f2a
Document camera torch and zoom features
...
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
2026-01-13 20:41:09 +01:00
Tommie
8ac04d39f4
Add shortcuts to change the camera zoom
...
MOD+up and MOD+zoom change the camera zoom.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2026-01-13 20:40:58 +01:00
Tommie
af355804ef
Add option to specify the camera zoom
...
Add --camera-zoom to specify the camera zoom.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2026-01-13 20:37:42 +01:00
Romain Vimont
1018f3e9be
Display fps set with '{}'
...
Replace "fps=[15, 30, 60]" with "fps={15, 30, 60}".
The default toString() implementation for a SortedSet uses '[]', but
it is more correct to use '{}' to denote a set.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
2026-01-13 20:36:33 +01:00
Romain Vimont
48fcfdd104
Add shortcuts to switch the camera torch
...
MOD+t turns on the camera torch, MOD+Shift+t turns it off.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
Co-authored-by: Tommie <teh420@gmail.com >
2026-01-13 20:35:52 +01:00
Tommie
553813e97d
Add option to turn on the camera torch
...
Add --camera-torch to turn on the camera torch when the camera starts.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2026-01-13 20:32:06 +01:00
Romain Vimont
968f178205
Simplify camera startup code
...
Avoid multiple back-and-forths between the caller thread and the camera
thread.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
2026-01-13 20:28:32 +01:00
Romain Vimont
1b13d0a22d
Enable "reset video" shortcut for camera
...
Make the existing "reset video" feature (MOD+Shift+R) also work for a
camera video source.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
2026-01-13 20:27:53 +01:00
Romain Vimont
078565d40b
Enable controls for camera video source
...
This will allow the implementation of camera-specific shortcuts.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
Co-authored-by: Tommie <teh420@gmail.com >
2026-01-13 20:27:33 +01:00
Romain Vimont
cc7c07d4a3
Report control protocol errors
...
All IOExceptions were ignored to avoid an error on close, but protocol
exceptions must be reported.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
2026-01-13 20:18:36 +01:00
Romain Vimont
24b46f11a5
Throw error on unexpected control message type
...
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
2026-01-13 20:15:37 +01:00
Romain Vimont
f348a1f307
Group control-event shortcuts
...
Group together the shortcuts that trigger control events sent to the
device.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
2026-01-13 20:11:16 +01:00
Romain Vimont
f8846aa76d
Simplify capture invalidation
...
Remove the unnecessary requestInvalidate() indirection. Use a single
invalidate() method instead.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
2026-01-13 20:10:30 +01:00
Romain Vimont
1e51d2c83f
Move precondition checks for input events
...
Always call the appropriate method responsible for handling the input
event, which can then decide to do nothing.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
2026-01-13 20:08:40 +01:00
Romain Vimont
826076f753
Detect frame size mismatch in decoder
...
Warn if the size of a decoded video frame does not match the session
metadata.
PR #6159 <https://github.com/Genymobile/scrcpy/pull/6159 >
2026-01-10 11:53:22 +01:00
Romain Vimont
c36433999c
Properly handle session packets in delay_buffer
...
The delay buffer must forward the session packets while preserving
their order relative to media packets.
PR #6159 <https://github.com/Genymobile/scrcpy/pull/6159 >
2026-01-10 11:53:22 +01:00
Romain Vimont
78cba1b7c2
Add session metadata for the video stream
...
Introduce a new packet type, a "session" packet, containing metadata
about the encoding session. It is used only for the video stream and
currently includes the video resolution.
For illustration, here is a sequence of packets on the video stream:
device rotation
v
CODEC | SESSION | MEDIA | MEDIA | … | SESSION | MEDIA | MEDIA | …
1920x1080 <-----------------> 1080x1920 <------------------
encoding session 1 encoding session 2
This metadata is not strictly necessary, since the video resolution can
be determined after decoding. However, it allows detection of cases
where the encoder does not respect the requested size (and logs a
warning), even without decoding (e.g., when there is no video playback).
Additional metadata could be added later if necessary, for example the
actual device rotation.
Refs #5918 <https://github.com/Genymobile/scrcpy/pull/5918 >
Refs #5894 <https://github.com/Genymobile/scrcpy/pull/5894 >
PR #6159 <https://github.com/Genymobile/scrcpy/pull/6159 >
Co-authored-by: gz0119 <liyong2@4399.com >
2026-01-10 11:53:22 +01:00
Romain Vimont
1015b42e53
Rename "codec meta" to "stream meta"
...
The stream metadata will contain both:
- the codec ID at the start of the stream
- the session metadata (video width and height) at the start of each
"session" (typically on rotation)
PR #6159 <https://github.com/Genymobile/scrcpy/pull/6159 >
2026-01-10 11:53:22 +01:00
Romain Vimont
f4cc07da24
Keep the window hidden during initialization
...
This prevents blinking during display initialization.
2026-01-09 19:08:04 +01:00
Romain Vimont
fde02a7dfa
Fix segfault with --no-video
...
Do not call SDL_RectToFRect() if geometry is NULL.
Bug introduced by 02989249f6 .
2026-01-09 19:06:08 +01:00
dddddjent
dee1fd46a6
Fix SDL colorspace matching AVCOL_SPC_RGB
...
Use BT.709 color space for AVCOL_SPC_RGB.
Refs #1868 comment <https://github.com/Genymobile/scrcpy/issues/1868#issuecomment-3293917796 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2026-01-08 20:40:51 +01:00
Romain Vimont
a90a039f50
Upgrade SDL3 dependency list for Github Actions
...
Explicitly install required packages listed here:
<https://wiki.libsdl.org/SDL3/README-linux#build-dependencies >
Refs #6216 comment <https://github.com/Genymobile/scrcpy/pull/6216#issuecomment-3703680127 >
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-08 20:40:51 +01:00
Romain Vimont
ab04e0348d
Build SDL3 for test step on Github Actions
...
The Ubuntu version used to build scrcpy does not provide an SDL3
package.
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-08 20:40:51 +01:00
Romain Vimont
99b955f390
Upgrade SDL build script for SDL3
...
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-08 20:40:51 +01:00
Romain Vimont
bbb855b5b0
Remove obsolete workaround for macOS
...
Refs #3031 <https://github.com/Genymobile/scrcpy/pull/3031 >
Refs SDL/#5340 <https://github.com/libsdl-org/SDL/issues/5340 >
Refs SDL/#5976 <https://github.com/libsdl-org/SDL/issues/5976 >
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-08 20:40:51 +01:00
Romain Vimont
4879950a06
Fix asynchronous SDL window state handling
...
The SDL3 migration guide [1] says:
> The following window operations are now considered to be asynchronous
requests and should not be assumed to succeed unless a corresponding
event has been received […]
Remove the boolean fields used to track the window state, as they were
fundamentally inconsistent with SDL's internal state. Use
SDL_GetWindowFlags() explicitly instead.
[1]: <https://wiki.libsdl.org/SDL3/README-migration >
Refs #6216 comment <https://github.com/Genymobile/scrcpy/pull/6216#discussion_r2651810005 >
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-08 20:40:51 +01:00
Romain Vimont
170b7a02e7
Disable "resize to pixel-perfect" when maximized
...
This improves consistency and will simplify further refactors.
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-08 20:40:51 +01:00