Re: [PATCH] Hang when moving between editing marks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>
> Here's another suggestion (line numbers may be a little off).
> The only difference to Reinhard's patch is that the sleep is done
> outside the locked area.
>
> Klaus
>
>
>
> --- dvbplayer.c 2005/01/14 14:00:56     1.30
> +++ dvbplayer.c 2005/05/08 14:40:48
> @@ -370,9 +372,14 @@
>
>     nonBlockingFileReader = new cNonBlockingFileReader;
>     int Length = 0;
> +  bool Sleep = false;
>
>     running = true;
>     while (running && (NextFile() || readIndex >= 0 ||
> ringBuffer->Available() || !DeviceFlush(100))) { +        if (Sleep) {
> +           cCondWait::SleepMs(3); // this keeps the CPU load low
> +           Sleep = false;
> +           }
>           cPoller Poller;
>           if (DevicePoll(Poller, 100)) {
>
> @@ -380,8 +387,8 @@
>
>              // Read the next frame from the file:
>
> -           if (!readFrame && (replayFile >= 0 || readIndex >= 0)) {
> -              if (playMode != pmStill) {
> +           if (playMode != pmStill && playMode != pmPause) {
> +              if (!readFrame && (replayFile >= 0 || readIndex >= 0)) {
>                    if (!nonBlockingFileReader->Reading()) {
>                       if (playMode == pmFast || (playMode == pmSlow &&
> playDir == pdBackward)) { uchar FileNumber;
> @@ -438,16 +445,16 @@
>                       break;
>                       }
>                    }
> -              else
> -                 cCondWait::SleepMs(3); // this keeps the CPU load low
> -              }
>
> -           // Store the frame in the buffer:
> +              // Store the frame in the buffer:
>
> -           if (readFrame) {
> -              if (ringBuffer->Put(readFrame))
> -                 readFrame = NULL;
> +              if (readFrame) {
> +                 if (ringBuffer->Put(readFrame))
> +                    readFrame = NULL;
> +                 }
>                 }
> +           else
> +              Sleep = true;
>
>              // Get the next frame from the buffer:
>
This works too.

S.


[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux