# HG changeset patch # User albeu # Date 1180602801 0 # Node ID 07741c30e64cfd6f747aed471100639a518b279a # Parent a25e0a8adab5270cb852e164e7856b655850f8ae Fix the step_property coammand to correctly handle the step size with all numerical types. diff -r a25e0a8adab5 -r 07741c30e64c command.c --- a/command.c Thu May 31 04:15:29 2007 +0000 +++ b/command.c Thu May 31 09:13:21 2007 +0000 @@ -1709,17 +1709,42 @@ break; case MP_CMD_STEP_PROPERTY:{ - float arg = cmd->args[1].v.f; - int r = mp_property_do - (cmd->args[0].v.s, M_PROPERTY_STEP_UP, - arg ? &arg : NULL, mpctx); + void* arg = NULL; + int r,i; + double d; + off_t o; + if (cmd->args[1].v.f) { + m_option_t* prop; + if((r = mp_property_do(cmd->args[0].v.s, + M_PROPERTY_GET_TYPE, + &prop, mpctx)) <= 0) + goto step_prop_err; + if(prop->type == CONF_TYPE_INT || + prop->type == CONF_TYPE_FLAG) + i = cmd->args[1].v.f, arg = &i; + else if(prop->type == CONF_TYPE_FLOAT) + arg = &cmd->args[1].v.f; + else if(prop->type == CONF_TYPE_DOUBLE || + prop->type == CONF_TYPE_TIME) + d = cmd->args[1].v.f, arg = &d; + else if(prop->type == CONF_TYPE_POSITION) + o = cmd->args[1].v.f, arg = &o; + else + mp_msg(MSGT_CPLAYER, MSGL_WARN, + "Ignoring step size stepping property '%s'.\n", + cmd->args[0].v.s); + } + r = mp_property_do(cmd->args[0].v.s, + M_PROPERTY_STEP_UP, + arg, mpctx); + step_prop_err: if (r == M_PROPERTY_UNKNOWN) mp_msg(MSGT_CPLAYER, MSGL_WARN, "Unknown property: '%s'\n", cmd->args[0].v.s); else if (r <= 0) mp_msg(MSGT_CPLAYER, MSGL_WARN, "Failed to increment property '%s' by %f.\n", - cmd->args[0].v.s, arg); + cmd->args[0].v.s, cmd->args[1].v.f); } break;