From 3ce7bc213c96853fba2bbe8333c58ef40c6fec71 Mon Sep 17 00:00:00 2001 From: Stefan Seyfried Date: Sat, 4 May 2013 17:27:01 +0200 Subject: [PATCH] GLFB: add a few sanity checks for sleep interval --- generic-pc/glfb.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/generic-pc/glfb.cpp b/generic-pc/glfb.cpp index 2c0abef..93c48d1 100644 --- a/generic-pc/glfb.cpp +++ b/generic-pc/glfb.cpp @@ -358,7 +358,8 @@ void GLFramebuffer::render() GLuint err = glGetError(); if (err != 0) lt_info("GLFB::%s: GLError:%d 0x%04x\n", __func__, err, err); - usleep(sleep_us); + if (sleep_us > 0) + usleep(sleep_us); glutPostRedisplay(); } @@ -515,12 +516,14 @@ void GLFramebuffer::bltDisplayBuffer() sleep_us -= 1000; last_apts = apts; videoDecoder->getPictureInfo(dummy1, dummy2, rate); - if (rate) + if (rate > 0) rate = 2000000 / rate; /* limit to half the frame rate */ else rate = 50000; /* minimum 20 fps */ if (sleep_us > rate) sleep_us = rate; + else if (sleep_us < 1) + sleep_us = 1; } lt_debug("vpts: 0x%" PRIx64 " apts: 0x%" PRIx64 " diff: %6.3f sleep_us %d buf %d\n", buf->pts(), apts, (buf->pts() - apts)/90000.0, sleep_us, videoDecoder->buf_num);