mirror of
https://github.com/mpv-player/mpv
synced 2025-02-16 12:17:12 +00:00
command: make current-window-scale writeable, 2nd attempt
The window-scale property mirrors the respective option (not the
effective scale derived from the current window size), and as such
setting its value to the same value it had before has no effect.
Specifically - the window will not resize.
This is consistent as far as property-option bridge behavior goes,
but we do end up with an issue that we can't set an arbitrary scale
and expect the window to always resize accordingly.
We do also have a current-window-scale property which does reflect
the actual window size, however, it's been read-only till now.
This commit makes current-window-scale RW so that it's now always
possible to set an arbitrary scale and expect the window to resize
accordingly (without affecting window-scale - like manual resize).
Also, mention window-scale no-effect-if-not-changed at the docs.
Based on code by @Dudemanguy from commit 873ae0d
, with same effect.
This commit is contained in:
parent
2667dd6643
commit
a0441ddb5e
@ -42,6 +42,7 @@ Interface changes
|
||||
instead be used to specifically set the contrast to any value.
|
||||
- add a `--watch-later-options` option to allow configuring which
|
||||
options quit-watch-later saves
|
||||
- make `current-window-scale` writeable and use it in the default input.conf
|
||||
--- mpv 0.33.0 ---
|
||||
- add `--d3d11-exclusive-fs` flag to enable D3D11 exclusive fullscreen mode
|
||||
when the player enters fullscreen.
|
||||
|
@ -2525,6 +2525,10 @@ Property list
|
||||
(or to be exact, the size the video filters output). ``2`` will set the
|
||||
double size, ``0.5`` halves the size.
|
||||
|
||||
Note that setting a value identical to its previous value will not resize
|
||||
the window. That's because this property mirrors the ``window-scale``
|
||||
option, and setting an option to its previous value is ignored.
|
||||
|
||||
See ``current-window-scale`` for the value derived from the actual window
|
||||
size.
|
||||
|
||||
@ -2533,12 +2537,15 @@ Property list
|
||||
Before mpv 0.31.0, this returned what ``current-window-scale`` returns now,
|
||||
after the window was created.
|
||||
|
||||
``current-window-scale``
|
||||
``current-window-scale`` (RW)
|
||||
The ``window-scale`` value calculated from the current window size. This
|
||||
has the same value as ``window-scale`` if the window size was not changed
|
||||
since setting the option, and the window size was not restricted in other
|
||||
ways. The property is unavailable if no video is active.
|
||||
|
||||
Setting the value of this property will always resize the window
|
||||
accordingly if possible, without affecting the value of ``window-scale``.
|
||||
|
||||
``focused``
|
||||
Whether the window has focus. Might not be supported by all VOs.
|
||||
|
||||
|
@ -118,9 +118,9 @@
|
||||
#6 add gamma 1
|
||||
#7 add saturation -1
|
||||
#8 add saturation 1
|
||||
#Alt+0 set window-scale 0.5
|
||||
#Alt+1 set window-scale 1.0
|
||||
#Alt+2 set window-scale 2.0
|
||||
#Alt+0 set current-window-scale 0.5
|
||||
#Alt+1 set current-window-scale 1.0
|
||||
#Alt+2 set current-window-scale 2.0
|
||||
# toggle deinterlacer (automatically inserts or removes required filter)
|
||||
#d cycle deinterlace
|
||||
#r add sub-pos -1 # move subtitles up
|
||||
|
@ -2330,6 +2330,15 @@ static int mp_property_current_window_scale(void *ctx, struct m_property *prop,
|
||||
if (vid_w < 1 || vid_h < 1)
|
||||
return M_PROPERTY_UNAVAILABLE;
|
||||
|
||||
if (action == M_PROPERTY_SET) {
|
||||
double scale = *(double *)arg;
|
||||
int s[2] = {vid_w * scale, vid_h * scale};
|
||||
if (s[0] <= 0 || s[1] <= 0)
|
||||
return M_PROPERTY_INVALID_FORMAT;
|
||||
vo_control(vo, VOCTRL_SET_UNFS_WINDOW_SIZE, s);
|
||||
return M_PROPERTY_OK;
|
||||
}
|
||||
|
||||
int s[2];
|
||||
if (vo_control(vo, VOCTRL_GET_UNFS_WINDOW_SIZE, s) <= 0 ||
|
||||
s[0] < 1 || s[1] < 1)
|
||||
|
Loading…
Reference in New Issue
Block a user