diff --git a/src/kits/media/Controllable.cpp b/src/kits/media/Controllable.cpp index d2e505a21e5..6c722245e53 100644 --- a/src/kits/media/Controllable.cpp +++ b/src/kits/media/Controllable.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -233,7 +234,16 @@ BControllable::HandleMessage(int32 message, const void* data, size_t size) return B_OK; } - SetParameterValue(request.parameter_id, request.when, + // NOTE: This is not very fair, but the alternative + // would have been to mess with friends classes and + // member variables. + bigtime_t perfTime = 0; + if (request.when == -1) + perfTime = TimeSource()->Now(); + else + perfTime = request.when; + + SetParameterValue(request.parameter_id, perfTime, transfer.Data(), request.size); request.SendReply(B_OK, &reply, sizeof(reply)); return B_OK; diff --git a/src/kits/media/DefaultMediaTheme.cpp b/src/kits/media/DefaultMediaTheme.cpp index 529be6c566d..3994e633824 100644 --- a/src/kits/media/DefaultMediaTheme.cpp +++ b/src/kits/media/DefaultMediaTheme.cpp @@ -650,7 +650,7 @@ ContinuousMessageFilter::Filter(BMessage *message, BHandler **target) "channels\n", fControl->Name(), fParameter.CountChannels()); if (fParameter.SetValue((void *)value, sizeof(value), - system_time()) < B_OK) { + -1) < B_OK) { ERROR("ContinuousMessageFilter::Filter: Could not set parameter " "value for %p\n", &fParameter); return B_DISPATCH_MESSAGE; @@ -760,7 +760,7 @@ DiscreteMessageFilter::Filter(BMessage *message, BHandler **target) TRACE("DiscreteMessageFilter::Filter: update view %s, value = %ld\n", control->Name(), value); - if (fParameter.SetValue((void *)&value, sizeof(value), system_time()) < B_OK) { + if (fParameter.SetValue((void *)&value, sizeof(value), -1) < B_OK) { ERROR("DiscreteMessageFilter::Filter: Could not set parameter value for %p\n", &fParameter); return B_DISPATCH_MESSAGE; }