Ticket #12306: fileringbuffer.cpp.diff

File fileringbuffer.cpp.diff, 2.2 KB (added by cweemin@…, 5 years ago)

Diff file

  • mythtv/libs/libmythtv/fileringbuffer.cpp

    diff --git a/mythtv/libs/libmythtv/fileringbuffer.cpp b/mythtv/libs/libmythtv/fileringbuffer.cpp
    index a7d7eee..5d3aea4 100644
    a b FileRingBuffer::FileRingBuffer(const QString &lfilename, 
    6969        else
    7070        {
    7171            tfw = new ThreadedFileWriter(
    72                 filename, O_WRONLY|O_TRUNC|O_CREAT|O_LARGEFILE, 0644);
     72                filename, O_WRONLY|O_TRUNC|O_CREAT|O_LARGEFILE|O_NONBLOCK, 0644);
    7373
    7474            if (!tfw->Open())
    7575            {
    bool FileRingBuffer::OpenFile(const QString &lfilename, uint retry_ms) 
    221221            lasterror = 0;
    222222
    223223            fd2 = open(filename.toLocal8Bit().constData(),
    224                        O_RDONLY|O_LARGEFILE|O_STREAMING|O_BINARY);
     224                       O_NONBLOCK|O_RDONLY|O_LARGEFILE|O_STREAMING|O_BINARY);
    225225
    226226            if (fd2 < 0)
    227227            {
    int FileRingBuffer::safe_read(int fd, void *data, uint sz) 
    460460        uint toread     = sz - tot;
    461461        bool read_ok    = true;
    462462        bool eof        = false;
     463     
    463464
    464465        // check that we have some data to read,
    465466        // so we never attempt to read past the end of file
    466467        // if fstat errored or isn't a regular file, default to previous behavior
     468/*
    467469        ret = fstat(fd2, &sb);
    468470        if (ret == 0 && S_ISREG(sb.st_mode))
    469471        {
    int FileRingBuffer::safe_read(int fd, void *data, uint sz) 
    487489                }
    488490            }
    489491        }
    490 
    491492        if (read_ok)
    492493        {
     494*/
    493495            LOG(VB_FILE, LOG_DEBUG, LOC +
    494496                QString("read(%1) -- begin").arg(toread));
    495497            ret = read(fd2, (char *)data + tot, toread);
    496498            LOG(VB_FILE, LOG_DEBUG, LOC +
    497499                QString("read(%1) -> %2 end").arg(toread).arg(ret));
    498         }
     500//        }
    499501        if (ret < 0)
    500502        {
    501503            if (errno == EAGAIN)
    int FileRingBuffer::safe_read(int fd, void *data, uint sz) 
    516518
    517519        if (oldfile)
    518520            break;
    519 
     521/*
    520522        if (eof)
    521523        {
    522524            // we can exit now, if file is still open for writing in another
    523525            // instance, RingBuffer will retry
    524526            break;
    525527        }
    526 
     528*/