vomp_platform =raspberry\r
# valid platforms are raspberry and mvp\r
-\r
+vomp_options=\r
+#uncomment the line below, if you want to vomp application like, without a reboot option, automatically set for windows!\r
+#vomp_options+= -DVOMP_HAS_EXIT\r
ifeq ($(vomp_platform),mvp)\r
\r
$(info MVP crosscompiler)\r
release: clean vompclient strip\r
\r
deps: GNUmakefile\r
- $(CC) -MM $(INCLUDES) $(OBJECTS:%.o=%.cc) > deps\r
+ $(CC) -MM $(INCLUDES) $(vomp_options) $(OBJECTS:%.o=%.cc) > deps\r
\r
-include deps\r
\r
}\r
}\r
\r
+void BoxStack::redrawAllBoxes()\r
+{\r
+#ifndef WIN32\r
+ pthread_mutex_lock(&boxLock);\r
+#else\r
+ WaitForSingleObject(boxLock, INFINITE);\r
+#endif\r
+\r
+ for (int z = 0; z < numBoxes; z++)\r
+ {\r
+ boxes[z]->draw();\r
+ }\r
+\r
+\r
+#ifndef WIN32\r
+ pthread_mutex_unlock(&boxLock);\r
+#else\r
+ ReleaseMutex(boxLock);\r
+#endif\r
+ update(NULL,NULL); // should blt all\r
+}\r
+\r
void BoxStack::update(Boxx* toUpdate, Region* regionToUpdate)\r
{\r
Log::getInstance()->log("BoxStack", Log::DEBUG, "Update called");\r
int remove(Boxx*);
void removeAll();
void update(Boxx*, Region* regionToUpdate = NULL);
+ void redrawAllBoxes();
// -- end
int handleCommand(int command);
// just kill it...\r
logger->log("Command", Log::NOTICE, "Reboot");\r
#ifndef WIN32\r
-#ifdef VOMP_PLATTFORM_MVP\r
+#ifndef VOMP_HAS_EXIT\r
reboot(LINUX_REBOOT_CMD_RESTART);\r
#else\r
stop();\r
#define CLOSESOCKET closesocket\r
#define DEFAULT_TCP_WINDOWSIZENR 1 /*=2048*/\r
\r
+ #define VOMP_HAS_EXIT\r
\r
#else\r
\r
\r
virtual int init(void* device)=0;\r
virtual int shutdown()=0;\r
+ virtual int restore(){return 1;};\r
\r
virtual Surface * createNewSurface()=0; // For Boxx\r
virtual int charSet() {return 1;};\r
}\r
\r
\r
+\r
+\r
void OsdOpenVG::threadMethod()\r
{\r
// We have to claim the egl context for this thread\r
int shutdown();\r
\r
\r
+\r
+\r
float getFontHeight();\r
float getCharWidth(wchar_t c);\r
void imageUploadLine(ImageIndex index,unsigned int j,unsigned int width,void *data);\r
// do nothing? remove this one?\r
}\r
\r
+int OsdVector::restore()\r
+{\r
+ // First clear the contents of all registered surfaces\r
+ surfaces_mutex.Lock();\r
+\r
+ //Now go through all surfaces and draw them\r
+ list<SurfaceCommands>::iterator curdraw=scommands.begin();\r
+ while (curdraw!=scommands.end()) {\r
+ (*curdraw).commands.clear();\r
+ curdraw++;\r
+ }\r
+ //also clear all handles, they are now invalid, no need to release them\r
+ images_ref.clear();;\r
+ monobitmaps.clear();\r
+ jpegs.clear();\r
+ styles.clear();\r
+ styles_ref.clear();\r
+\r
+ surfaces_mutex.Unlock();\r
+ return 1;\r
+}\r
+\r
void OsdVector::drawSurfaces()\r
{\r
surfaces_mutex.Lock();\r
virtual ~OsdVector();\r
\r
\r
+ int restore();\r
+\r
int getFD();\r
\r
void screenShot(const char* fileName);\r
{
if (!initted) return 0;
deinitCec();
-
+ while (devices.size()) {
+ int cur_fd = devices.back();
+ devices.pop_back();
+ close(cur_fd);
+ }
initted = 0;
return 1;
/*
- Copyright 2004-2005 Chris Tallon, 2009 Marten Richter
+ Copyright 2004-2005 Chris Tallon, 2009-12 Marten Richter
This file is part of VOMP.
#include "vdr.h"
#include "woptionpane.h"
#include "osdopenvg.h"
+#include "boxstack.h"
#include <linux/fb.h>
int VideoOMX::signalOff()
{
//TODO reinit osd
- //vc_tv_power_off();
- //signalon=false;
+ Log::getInstance()->log("Video", Log::NOTICE, "signalOff");
+ vc_tv_power_off();
+ signalon=false;
return 1;
}
int VideoOMX::signalOn()
{
- if (!signalon) selectVideoMode(0);
+ if (!signalon) {
+ Osd::getInstance()->shutdown();
+ selectVideoMode(0);
+ Osd::getInstance()->restore();
+ Osd::getInstance()->init((void*)"");
+ BoxStack::getInstance()->redrawAllBoxes();
+ initted=1;
+
+ }
return 1;
}
#endif\r
\r
sl.addOption(tr("6. Options"), 6, 0);\r
-#ifdef VOMP_PLATTFORM_MVP\r
+#ifndef VOMP_HAS_EXIT\r
sl.addOption(tr("7. Reboot"), 7, 0);\r
#else\r
sl.addOption(tr("7. Exit"), 7, 0);\r
\r
void VWelcome::draw()\r
{\r
- Log::getInstance()->log("VWelcome", Log::DEBUG, "Mark1");\r
TBBoxx::draw();\r
- Log::getInstance()->log("VWelcome", Log::DEBUG, "Mark2");\r
drawClock();\r
- Log::getInstance()->log("VWelcome", Log::DEBUG, "Mark3");\r
}\r
\r
void VWelcome::drawClock()\r