mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
The function cRingBufferLinear::Clear() can now be called safely from the reading thread, without additional locking
This commit is contained in:
parent
31b0feae14
commit
367557039a
4
HISTORY
4
HISTORY
@ -8882,7 +8882,7 @@ Video Disk Recorder Revision History
|
|||||||
- Added a short sleep to cTSBuffer::Action() to avoid high CPU usage (thanks to
|
- Added a short sleep to cTSBuffer::Action() to avoid high CPU usage (thanks to
|
||||||
Sergey Chernyavskiy).
|
Sergey Chernyavskiy).
|
||||||
|
|
||||||
2017-03-18: Version 2.3.3
|
2017-03-19: Version 2.3.3
|
||||||
|
|
||||||
- Added 'S3W ABS-3A' to sources.conf (thanks to Frank Richter).
|
- Added 'S3W ABS-3A' to sources.conf (thanks to Frank Richter).
|
||||||
- Fixed a possible deadlock in the recordings handler thread.
|
- Fixed a possible deadlock in the recordings handler thread.
|
||||||
@ -8918,3 +8918,5 @@ Video Disk Recorder Revision History
|
|||||||
that is capable of decrypting more than one channel ("Multi Channel Decryption")
|
that is capable of decrypting more than one channel ("Multi Channel Decryption")
|
||||||
to decrypt channels from different transponders. See the remarks in mtd.h on
|
to decrypt channels from different transponders. See the remarks in mtd.h on
|
||||||
what a derived cCamSlot class needs to do in order to activate MTD.
|
what a derived cCamSlot class needs to do in order to activate MTD.
|
||||||
|
- The function cRingBufferLinear::Clear() can now be called safely from the
|
||||||
|
reading thread, without additional locking.
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Parts of this file were inspired by the 'ringbuffy.c' from the
|
* Parts of this file were inspired by the 'ringbuffy.c' from the
|
||||||
* LinuxDVB driver (see linuxtv.org).
|
* LinuxDVB driver (see linuxtv.org).
|
||||||
*
|
*
|
||||||
* $Id: ringbuffer.c 4.1 2016/12/22 10:26:13 kls Exp $
|
* $Id: ringbuffer.c 4.2 2017/03/19 12:43:36 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ringbuffer.h"
|
#include "ringbuffer.h"
|
||||||
@ -216,9 +216,10 @@ int cRingBufferLinear::Available(void)
|
|||||||
|
|
||||||
void cRingBufferLinear::Clear(void)
|
void cRingBufferLinear::Clear(void)
|
||||||
{
|
{
|
||||||
tail = head = margin;
|
int Head = head;
|
||||||
|
tail = Head;
|
||||||
#ifdef DEBUGRINGBUFFERS
|
#ifdef DEBUGRINGBUFFERS
|
||||||
lastHead = head;
|
lastHead = Head;
|
||||||
lastTail = tail;
|
lastTail = tail;
|
||||||
lastPut = lastGet = -1;
|
lastPut = lastGet = -1;
|
||||||
#endif
|
#endif
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: ringbuffer.h 4.1 2016/12/22 10:26:13 kls Exp $
|
* $Id: ringbuffer.h 4.2 2017/03/19 13:11:39 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __RINGBUFFER_H
|
#ifndef __RINGBUFFER_H
|
||||||
@ -80,6 +80,8 @@ public:
|
|||||||
virtual int Free(void) { return Size() - Available() - 1 - margin; }
|
virtual int Free(void) { return Size() - Available() - 1 - margin; }
|
||||||
virtual void Clear(void);
|
virtual void Clear(void);
|
||||||
///< Immediately clears the ring buffer.
|
///< Immediately clears the ring buffer.
|
||||||
|
///< This function may safely be called from the reading thread without additional
|
||||||
|
///< locking. If called from the writing thread, proper locking must be used.
|
||||||
int Read(int FileHandle, int Max = 0);
|
int Read(int FileHandle, int Max = 0);
|
||||||
///< Reads at most Max bytes from FileHandle and stores them in the
|
///< Reads at most Max bytes from FileHandle and stores them in the
|
||||||
///< ring buffer. If Max is 0, reads as many bytes as possible.
|
///< ring buffer. If Max is 0, reads as many bytes as possible.
|
||||||
|
Loading…
Reference in New Issue
Block a user