summaryrefslogtreecommitdiffstats
path: root/player
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2019-12-16 02:32:17 +0100
committerwm4 <wm4@nowhere>2019-12-16 02:32:17 +0100
commitd07b7f068db56aa5fa7cf16b9d077721ff0a8452 (patch)
tree355bb260fc26e1b8f43d373c1441a21662ad13b5 /player
parent98008558950c3eb99bad031cb478afa287e428aa (diff)
downloadmpv-d07b7f068db56aa5fa7cf16b9d077721ff0a8452.tar.bz2
mpv-d07b7f068db56aa5fa7cf16b9d077721ff0a8452.tar.xz
command: change "window-scale" property behavior
This is similar to the "edition" change. I considered making this go through deprecation, but didn't have a good idea how to do that. Maybe it's fine, because this is pretty obscure. But it might break some API users/scripts (it certainly broke stats.lua), and all I have to say is sorry for that.
Diffstat (limited to 'player')
-rw-r--r--player/command.c35
-rw-r--r--player/lua/stats.lua2
2 files changed, 16 insertions, 21 deletions
diff --git a/player/command.c b/player/command.c
index c634caa11f..b31b42e9bc 100644
--- a/player/command.c
+++ b/player/command.c
@@ -2226,34 +2226,28 @@ static int mp_property_video_frame_info(void *ctx, struct m_property *prop,
return m_property_read_sub(props, action, arg);
}
-static int mp_property_window_scale(void *ctx, struct m_property *prop,
- int action, void *arg)
+static int mp_property_current_window_scale(void *ctx, struct m_property *prop,
+ int action, void *arg)
{
MPContext *mpctx = ctx;
struct vo *vo = mpctx->video_out;
if (!vo)
- goto generic;
+ return M_PROPERTY_UNAVAILABLE;
struct mp_image_params params = get_video_out_params(mpctx);
int vid_w, vid_h;
mp_image_params_get_dsize(&params, &vid_w, &vid_h);
if (vid_w < 1 || vid_h < 1)
- goto generic;
+ return M_PROPERTY_UNAVAILABLE;
- switch (action) {
- case M_PROPERTY_GET: {
- int s[2];
- if (vo_control(vo, VOCTRL_GET_UNFS_WINDOW_SIZE, s) <= 0 ||
- s[0] < 1 || s[1] < 1)
- goto generic;
- double xs = (double)s[0] / vid_w;
- double ys = (double)s[1] / vid_h;
- *(double *)arg = (xs + ys) / 2;
- return M_PROPERTY_OK;
- }
- }
-generic:
- return mp_property_generic_option(mpctx, prop, action, arg);
+ int s[2];
+ if (vo_control(vo, VOCTRL_GET_UNFS_WINDOW_SIZE, s) <= 0 ||
+ s[0] < 1 || s[1] < 1)
+ return M_PROPERTY_UNAVAILABLE;
+
+ double xs = (double)s[0] / vid_w;
+ double ys = (double)s[1] / vid_h;
+ return m_property_double_ro(action, arg, (xs + ys) / 2);
}
static void update_window_scale(struct MPContext *mpctx)
@@ -3328,7 +3322,7 @@ static const struct m_property mp_properties_base[] = {
M_PROPERTY_ALIAS("dheight", "video-out-params/dh"),
M_PROPERTY_ALIAS("width", "video-params/w"),
M_PROPERTY_ALIAS("height", "video-params/h"),
- {"window-scale", mp_property_window_scale},
+ {"current-window-scale", mp_property_current_window_scale},
{"vo-configured", mp_property_vo_configured},
{"vo-passes", mp_property_vo_passes},
{"current-vo", mp_property_vo},
@@ -3449,7 +3443,8 @@ static const char *const *const mp_event_property_change[] = {
"demuxer-cache-duration", "demuxer-cache-idle", "paused-for-cache",
"demuxer-cache-time", "cache-buffering-state", "cache-speed",
"demuxer-cache-state"),
- E(MP_EVENT_WIN_RESIZE, "window-scale", "osd-width", "osd-height", "osd-par"),
+ E(MP_EVENT_WIN_RESIZE, "current-window-scale", "osd-width", "osd-height",
+ "osd-par"),
E(MP_EVENT_WIN_STATE, "window-minimized", "display-names", "display-fps",
"fullscreen", "window-maximized"),
E(MP_EVENT_CHANGE_PLAYLIST, "playlist", "playlist-pos", "playlist-pos-1",
diff --git a/player/lua/stats.lua b/player/lua/stats.lua
index a1cd566ab5..aa95592694 100644
--- a/player/lua/stats.lua
+++ b/player/lua/stats.lua
@@ -506,7 +506,7 @@ local function add_video(s)
if append(s, r["w"], {prefix="Native Resolution:"}) then
append(s, r["h"], {prefix="x", nl="", indent=" ", prefix_sep=" ", no_prefix_markup=true})
end
- append_property(s, "window-scale", {prefix="Window Scale:"})
+ append_property(s, "current-window-scale", {prefix="Window Scale:"})
append(s, format("%.2f", r["aspect"]), {prefix="Aspect Ratio:"})
append(s, r["pixelformat"], {prefix="Pixel Format:"})