mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Made cCondWait::SleepMs() sleep at least 3ms to avoid a possible busy wait
This commit is contained in:
parent
0d596d0478
commit
0ad4b2a713
1
HISTORY
1
HISTORY
@ -3298,3 +3298,4 @@ Video Disk Recorder Revision History
|
||||
for "Setup/DVB/Audio language(s)" (thanks to Rolf Ahrenberg).
|
||||
- Completed the Estonian OSD texts and switched to iso8859-13 character set
|
||||
(thanks to Arthur Konovalov).
|
||||
- Made cCondWait::SleepMs() sleep at least 3ms to avoid a possible busy wait.
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbdevice.c 1.113 2005/01/09 13:04:20 kls Exp $
|
||||
* $Id: dvbdevice.c 1.114 2005/01/14 14:00:44 kls Exp $
|
||||
*/
|
||||
|
||||
#include "dvbdevice.h"
|
||||
@ -1111,7 +1111,7 @@ void cDvbDevice::StillPicture(const uchar *Data, int Length)
|
||||
#define MIN_IFRAME 400000
|
||||
for (int i = MIN_IFRAME / Length + 1; i > 0; i--) {
|
||||
safe_write(fd_video, Data, Length);
|
||||
cCondWait::SleepMs(1); // allows the buffer to be displayed in case the progress display is active
|
||||
cCondWait::SleepMs(3); // allows the buffer to be displayed in case the progress display is active
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbplayer.c 1.29 2004/12/26 11:45:34 kls Exp $
|
||||
* $Id: dvbplayer.c 1.30 2005/01/14 14:00:56 kls Exp $
|
||||
*/
|
||||
|
||||
#include "dvbplayer.h"
|
||||
@ -439,7 +439,7 @@ void cDvbPlayer::Action(void)
|
||||
}
|
||||
}
|
||||
else
|
||||
cCondWait::SleepMs(1); // this keeps the CPU load low
|
||||
cCondWait::SleepMs(3); // this keeps the CPU load low
|
||||
}
|
||||
|
||||
// Store the frame in the buffer:
|
||||
|
4
thread.c
4
thread.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: thread.c 1.40 2004/12/19 10:43:14 kls Exp $
|
||||
* $Id: thread.c 1.41 2005/01/14 13:59:48 kls Exp $
|
||||
*/
|
||||
|
||||
#include "thread.h"
|
||||
@ -36,7 +36,7 @@ cCondWait::~cCondWait()
|
||||
void cCondWait::SleepMs(int TimeoutMs)
|
||||
{
|
||||
cCondWait w;
|
||||
w.Wait(TimeoutMs);
|
||||
w.Wait(max(TimeoutMs, 3)); // making sure the time is >2ms to avoid a possible busy wait
|
||||
}
|
||||
|
||||
bool cCondWait::Wait(int TimeoutMs)
|
||||
|
4
thread.h
4
thread.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: thread.h 1.26 2004/12/19 10:43:10 kls Exp $
|
||||
* $Id: thread.h 1.27 2005/01/14 14:02:14 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __THREAD_H
|
||||
@ -26,6 +26,8 @@ public:
|
||||
///< Creates a cCondWait object and uses it to sleep for TimeoutMs
|
||||
///< milliseconds, immediately giving up the calling thread's time
|
||||
///< slice and thus avoiding a "busy wait".
|
||||
///< In order to avoid a possible busy wait, TimeoutMs will be automatically
|
||||
///< limited to values >2.
|
||||
bool Wait(int TimeoutMs = 0);
|
||||
///< Waits at most TimeoutMs milliseconds for a call to Signal(), or
|
||||
///< forever if TimeoutMs is 0.
|
||||
|
Loading…
Reference in New Issue
Block a user