From d07b7f068db56aa5fa7cf16b9d077721ff0a8452 Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 16 Dec 2019 02:32:17 +0100 Subject: 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. --- player/command.c | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) (limited to 'player/command.c') 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(¶ms, &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", -- cgit v1.2.3