hrev49588 adds 2 changesets to branch 'master'
old head: d6039d2b239d1571ad7ad1d61aedba713c23480e
new head: be7d9d3f5d23570f02de6853c781a9a56b13397b
overview:
http://cgit.haiku-os.org/haiku/log/?qt=range&q=be7d9d3f5d23+%5Ed6039d2b239d
----------------------------------------------------------------------------
90cdf5e42e88: BMediaNode::WaitForMessage: protect it over negative timeouts
be7d9d3f5d23: BMediaEventLooper: With B_WOULD_BLOCK we may still handle an event
[ Dario Casalinuovo <b.vitruvio@xxxxxxxxx> ]
----------------------------------------------------------------------------
2 files changed, 10 insertions(+), 2 deletions(-)
src/kits/media/MediaEventLooper.cpp | 5 +++--
src/kits/media/MediaNode.cpp | 7 +++++++
############################################################################
Commit: 90cdf5e42e888bb80eabe4770c7c34149ad60f02
URL: http://cgit.haiku-os.org/haiku/commit/?id=90cdf5e42e88
Author: Dario Casalinuovo <b.vitruvio@xxxxxxxxx>
Date: Thu Aug 27 17:38:44 2015 UTC
BMediaNode::WaitForMessage: protect it over negative timeouts
----------------------------------------------------------------------------
diff --git a/src/kits/media/MediaNode.cpp b/src/kits/media/MediaNode.cpp
index bece94a..c7b5f21 100644
--- a/src/kits/media/MediaNode.cpp
+++ b/src/kits/media/MediaNode.cpp
@@ -343,6 +343,13 @@ BMediaNode::WaitForMessage(bigtime_t waitUntil, uint32
flags,
char data[B_MEDIA_MESSAGE_SIZE];
int32 message;
ssize_t size;
+
+ // TODO: Investigate on this issue
+ if (waitUntil < 0) {
+ TRACE("BMediaNode::WaitForMessage: Negative timeout!\n");
+ waitUntil = 0;
+ }
+
while (true) {
size = read_port_etc(ControlPort(), &message, data,
sizeof(data), B_ABSOLUTE_TIMEOUT, waitUntil);
############################################################################
Revision: hrev49588
Commit: be7d9d3f5d23570f02de6853c781a9a56b13397b
URL: http://cgit.haiku-os.org/haiku/commit/?id=be7d9d3f5d23
Author: Dario Casalinuovo <b.vitruvio@xxxxxxxxx>
Date: Thu Aug 27 17:40:00 2015 UTC
BMediaEventLooper: With B_WOULD_BLOCK we may still handle an event
----------------------------------------------------------------------------
diff --git a/src/kits/media/MediaEventLooper.cpp
b/src/kits/media/MediaEventLooper.cpp
index c592845..c9c006d 100644
--- a/src/kits/media/MediaEventLooper.cpp
+++ b/src/kits/media/MediaEventLooper.cpp
@@ -228,11 +228,12 @@ BMediaEventLooper::ControlLoop()
return;
err = WaitForMessage(waitUntil);
- if (err == B_TIMED_OUT) {
+ if (err == B_TIMED_OUT
+ || err == B_WOULD_BLOCK) {
media_timed_event event;
if (hasEvent)
err = fEventQueue.RemoveFirstEvent(&event);
- else
+ else if (hasRealtime)
err = fRealTimeQueue.RemoveFirstEvent(&event);
if (err == B_OK) {