#include <lib/gdi/accel.h>
#include <time.h>
-
-gFBDC *gFBDC::instance;
-
-ePtr<gFBDC> NewgFBDCPtr(void)
-{
- ePtr<gFBDC> ptr;
- gFBDC::getInstance(ptr);
- return ptr;
-}
+#ifdef USE_LIBVUGLES2
+#include <vuplus_gles.h>
+#endif
gFBDC::gFBDC()
{
- instance=this;
fb=new fbClass;
if (!fb->Available())
{
delete fb;
delete[] surface.clut.data;
- instance=0;
}
void gFBDC::calcRamp()
fb->PutCMAP();
}
-void gFBDC::exec(gOpcode *o)
+void gFBDC::exec(const gOpcode *o)
{
switch (o->opcode)
{
++t;
+ fb->blit();
fb->waitVSync();
break;
}
case gOpcode::flush:
+#ifdef USE_LIBVUGLES2
+ if (gles_is_animation())
+ gles_do_animation();
+ else
+ fb->blit();
+
+ gles_flush();
+#else
fb->blit();
+#endif
+ break;
+ case gOpcode::sendShow:
+ {
+#ifdef USE_LIBVUGLES2
+ gles_set_buffer((unsigned int *)surface.data);
+ gles_set_animation(1, o->parm.setShowHideInfo->point.x(), o->parm.setShowHideInfo->point.y(), o->parm.setShowHideInfo->size.width(), o->parm.setShowHideInfo->size.height());
+#endif
+ delete o->parm.setShowHideInfo;
+ break;
+ }
+ case gOpcode::sendHide:
+ {
+#ifdef USE_LIBVUGLES2
+ gles_set_buffer((unsigned int *)surface.data);
+ gles_set_animation(0, o->parm.setShowHideInfo->point.x(), o->parm.setShowHideInfo->point.y(), o->parm.setShowHideInfo->size.width(), o->parm.setShowHideInfo->size.height());
+#endif
+ delete o->parm.setShowHideInfo;
+ break;
+ }
+#ifdef USE_LIBVUGLES2
+ case gOpcode::sendShowItem:
+ {
+ gles_set_buffer((unsigned int *)surface.data);
+ gles_set_animation_listbox(o->parm.setShowItemInfo->dir, o->parm.setShowItemInfo->point.x(), o->parm.setShowItemInfo->point.y(), o->parm.setShowItemInfo->size.width(), o->parm.setShowItemInfo->size.height());
+ delete o->parm.setShowItemInfo;
+ break;
+ }
+ case gOpcode::setFlush:
+ {
+ gles_set_flush(o->parm.setFlush->enable);
+ delete o->parm.setFlush;
break;
+ }
+ case gOpcode::setView:
+ {
+ gles_viewport(o->parm.setViewInfo->size.width(), o->parm.setViewInfo->size.height(), fb->Stride());
+ delete o->parm.setViewInfo;
+ break;
+ }
+#endif
default:
gDC::exec(o);
break;
surface.data = fb->lfb;
surface.offset = 0;
- surface.data_phys = 50*1024*1024; // FIXME
+ surface.data_phys = fb->getPhysAddr();
int fb_size = surface.stride * surface.y;
setPalette();
}
-// eAutoInitPtr<gFBDC> init_gFBDC(eAutoInitNumbers::graphic-1, "GFBDC");
-#ifndef WITH_SDL
eAutoInitPtr<gFBDC> init_gFBDC(eAutoInitNumbers::graphic-1, "GFBDC");
-#endif