#include <lib/gdi/font.h>
#include <lib/base/init.h>
#include <lib/base/init_num.h>
+#ifdef USE_LIBVUGLES2
+#include <vuplus_gles.h>
+#endif
#ifndef SYNC_PAINT
void *gRC::thread_wrapper(void *ptr)
void *gRC::thread()
{
int need_notify = 0;
+#ifdef USE_LIBVUGLES2
+ if (gles_open()) {
+ gles_state_open();
+ gles_viewport(720, 576, 720 * 4);
+ }
+#endif
#ifndef SYNC_PAINT
while (1)
{
if (pthread_cond_timedwait(&cond, &mutex, &timeout) == ETIMEDOUT)
{
if (eApp && !eApp->isIdle())
- idle = 0;
+ {
+ int idle_count = eApp->idleCount();
+ if (idle_count == m_prev_idle_count)
+ idle = 0;
+ else
+ m_prev_idle_count = idle_count;
+ }
}
if (!idle)
#endif
}
}
+#ifdef USE_LIBVUGLES2
+ gles_state_close();
+ gles_close();
+#endif
#ifndef SYNC_PAINT
pthread_exit(0);
#endif
{
if ( m_dc->islocked() )
return;
+ ASSERT(para);
gOpcode o;
o.opcode=gOpcode::renderPara;
o.dc = m_dc.grabRef();
{
if ( m_dc->islocked() )
return;
+ ASSERT(colors);
gOpcode o;
o.opcode=gOpcode::setPalette;
o.dc = m_dc.grabRef();
{
if ( m_dc->islocked() )
return;
+ ASSERT(target);
gOpcode o;
o.opcode = gOpcode::mergePalette;
o.dc = m_dc.grabRef();
m_rc->submit(o);
}
-void gPainter::end()
+void gPainter::flush()
{
if ( m_dc->islocked() )
return;
m_rc->submit(o);
}
+void gPainter::end()
+{
+ if ( m_dc->islocked() )
+ return;
+}
+
+void gPainter::sendShow(ePoint point, eSize size)
+{
+ if ( m_dc->islocked() )
+ return;
+ gOpcode o;
+ o.opcode=gOpcode::sendShow;
+ o.dc = m_dc.grabRef();
+ o.parm.setShowHideInfo = new gOpcode::para::psetShowHideInfo;
+ o.parm.setShowHideInfo->point = point;
+ o.parm.setShowHideInfo->size = size;
+ m_rc->submit(o);
+}
+
+void gPainter::sendHide(ePoint point, eSize size)
+{
+ if ( m_dc->islocked() )
+ return;
+ gOpcode o;
+ o.opcode=gOpcode::sendHide;
+ o.dc = m_dc.grabRef();
+ o.parm.setShowHideInfo = new gOpcode::para::psetShowHideInfo;
+ o.parm.setShowHideInfo->point = point;
+ o.parm.setShowHideInfo->size = size;
+ m_rc->submit(o);
+}
+
+#ifdef USE_LIBVUGLES2
+void gPainter::setView(eSize size)
+{
+ if ( m_dc->islocked() )
+ return;
+ gOpcode o;
+ o.opcode=gOpcode::setView;
+ o.dc = m_dc.grabRef();
+ o.parm.setViewInfo = new gOpcode::para::psetViewInfo;
+ o.parm.setViewInfo->size = size;
+ m_rc->submit(o);
+}
+#endif
+
gDC::gDC()
{
m_spinner_pic = 0;
delete[] m_spinner_pic;
}
-void gDC::exec(gOpcode *o)
+void gDC::exec(const gOpcode *o)
{
switch (o->opcode)
{
break;
case gOpcode::flush:
break;
+ case gOpcode::sendShow:
+ break;
+ case gOpcode::sendHide:
+ break;
+#ifdef USE_LIBVUGLES2
+ case gOpcode::setView:
+ break;
+#endif
case gOpcode::enableSpinner:
enableSpinner();
break;