[haiku-commits] haiku: hrev50191 - src/kits/media

  • From: b.vitruvio@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 7 Apr 2016 16:04:39 +0200 (CEST)

hrev50191 adds 1 changeset to branch 'master'
old head: 15b4841a946824f364f249f68ddefa1d32ae2a9d
new head: f441a1e2cec24cabb799632ff3603b095b2e33b9
overview: 
http://cgit.haiku-os.org/haiku/log/?qt=range&q=f441a1e2cec2+%5E15b4841a9468

----------------------------------------------------------------------------

f441a1e2cec2: BControllable: Fix real_time and perf_time mismatch
  
  * It caused parameters to change with delay, because the
  event has been enqueued in the event queue with real time.
  * Please don't rely on system_time.
  * Fixes #5106.

                                [ Dario Casalinuovo <b.vitruvio@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev50191
Commit:      f441a1e2cec24cabb799632ff3603b095b2e33b9
URL:         http://cgit.haiku-os.org/haiku/commit/?id=f441a1e2cec2
Author:      Dario Casalinuovo <b.vitruvio@xxxxxxxxx>
Date:        Thu Apr  7 13:57:45 2016 UTC

Ticket:      https://dev.haiku-os.org/ticket/5106

----------------------------------------------------------------------------

2 files changed, 13 insertions(+), 3 deletions(-)
src/kits/media/Controllable.cpp      | 12 +++++++++++-
src/kits/media/DefaultMediaTheme.cpp |  4 ++--

----------------------------------------------------------------------------

diff --git a/src/kits/media/Controllable.cpp b/src/kits/media/Controllable.cpp
index d2e505a..6c72224 100644
--- a/src/kits/media/Controllable.cpp
+++ b/src/kits/media/Controllable.cpp
@@ -39,6 +39,7 @@
 #include <OS.h>
 #include <ParameterWeb.h>
 #include <Roster.h>
+#include <TimeSource.h>
 
 #include <debug.h>
 #include <DataExchange.h>
@@ -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 529be6c..3994e63 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;
        }


Other related posts:

  • » [haiku-commits] haiku: hrev50191 - src/kits/media - b . vitruvio