X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fgdi%2Fgrc.cpp;h=86d53fd3cc1021d3d8fd31c108c295c90f04e499;hb=6ae5d719b93de2e8897a660ac61b0e9c5a190dde;hp=a46b218c3d74a4169b38a70c1c6bf6712fb6d7fc;hpb=f4f8f9a2775fa1794de6935756f30bf4d99f33e8;p=vuplus_dvbapp diff --git a/lib/gdi/grc.cpp b/lib/gdi/grc.cpp index a46b218..86d53fd 100644 --- a/lib/gdi/grc.cpp +++ b/lib/gdi/grc.cpp @@ -119,7 +119,7 @@ void *gRC::thread() break; else if (o.opcode==gOpcode::notify) need_notify = 1; - else + else if(o.dc) { o.dc->exec(&o); // o.dc is a gDC* filled with grabref... so we must release it here @@ -139,24 +139,21 @@ void *gRC::thread() /* when the main thread is non-idle for a too long time without any display output, we want to display a spinner. */ - - struct timeval time; struct timespec timeout; - gettimeofday(&time, NULL); - timeout.tv_sec = time.tv_sec; - timeout.tv_nsec = time.tv_usec * 1000; - + clock_gettime(CLOCK_REALTIME, &timeout); + if (m_spinner_enabled) + { timeout.tv_nsec += 100*1000*1000; - else - timeout.tv_sec += 2; - /* yes, this is required. */ - if (timeout.tv_nsec > 1000*1000*1000) - { - timeout.tv_nsec -= 1000*1000*1000; - timeout.tv_sec++; + if (timeout.tv_nsec > 1000*1000*1000) + { + timeout.tv_nsec -= 1000*1000*1000; + timeout.tv_sec++; + } } + else + timeout.tv_sec += 2; int idle = 1; @@ -165,8 +162,6 @@ void *gRC::thread() if (eApp && !eApp->isIdle()) idle = 0; } - - pthread_mutex_unlock(&mutex); if (!idle) { @@ -176,6 +171,7 @@ void *gRC::thread() } else disableSpinner(); } + pthread_mutex_unlock(&mutex); #endif } } @@ -613,7 +609,7 @@ void gDC::exec(gOpcode *o) { ePtr para = new eTextPara(o->parm.renderText->area); int flags = o->parm.renderText->flags; - assert(m_current_font); + ASSERT(m_current_font); para->setFont(m_current_font); para->renderString(o->parm.renderText->text, (flags & gPainter::RT_WRAP) ? RS_WRAP : 0); if (o->parm.renderText->text)