use eEnv::resolve() / eEnv.resolve()
[vuplus_dvbapp] / main / enigma.cpp
index 6c5169d..882af99 100644 (file)
@@ -1,15 +1,15 @@
-#ifdef WITH_SDL
-#define SDLDC
-#endif
-
-#include <stdio.h>
 #include <unistd.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
 #include <libsig_comp.h>
 
 #include <lib/actions/action.h>
 #include <lib/driver/rc.h>
 #include <lib/base/ioprio.h>
 #include <lib/base/ebase.h>
+#include <lib/base/eenv.h>
 #include <lib/base/eerror.h>
 #include <lib/base/init.h>
 #include <lib/base/init_num.h>
@@ -32,9 +32,7 @@
 
 #include "bsod.h"
 
-#ifdef HAVE_GSTREAMER
 #include <gst/gst.h>
-#endif
 
 #ifdef OBJECT_DEBUG
 int object_total_remaining;
@@ -136,12 +134,10 @@ int main(int argc, char **argv)
        atexit(object_dump);
 #endif
 
-#ifdef HAVE_GSTREAMER
        gst_init(&argc, &argv);
-#endif
 
        // set pythonpath if unset
-       setenv("PYTHONPATH", LIBDIR "/enigma2/python", 0);
+       setenv("PYTHONPATH", eEnv::resolve("${libdir}/enigma2/python").c_str(), 0);
        printf("PYTHONPATH: %s\n", getenv("PYTHONPATH"));
        
        bsodLogInit();
@@ -150,7 +146,7 @@ int main(int argc, char **argv)
        eMain main;
 
 #if 1
-#ifdef SDLDC
+#ifdef WITH_SDL
        ePtr<gSDLDC> my_dc;
        gSDLDC::getInstance(my_dc);
 #else
@@ -173,11 +169,11 @@ int main(int argc, char **argv)
                eTextPara::forceReplacementGlyph(i);
 
        eWidgetDesktop dsk(eSize(720, 576));
-       eWidgetDesktop dsk_lcd(eSize(132, 64));
-       
+       eWidgetDesktop dsk_lcd(my_lcd_dc->size());
+
        dsk.setStyleID(0);
-       dsk_lcd.setStyleID(1);
-       
+       dsk_lcd.setStyleID(my_lcd_dc->size().width() == 96 ? 2 : 1);
+
 /*     if (double_buffer)
        {
                eDebug(" - double buffering found, enable buffered graphics mode.");
@@ -191,7 +187,7 @@ int main(int argc, char **argv)
        dsk_lcd.setDC(my_lcd_dc);
 
        ePtr<gPixmap> m_pm;
-       loadPNG(m_pm, DATADIR "/enigma2/pal.png");
+       loadPNG(m_pm, eEnv::resolve("${datadir}/enigma2/skin_default/pal.png").c_str());
        if (!m_pm)
        {
                eFatal("pal.png not found!");
@@ -214,14 +210,16 @@ int main(int argc, char **argv)
                ePtr<gPixmap> wait[MAX_SPINNER];
                for (i=0; i<MAX_SPINNER; ++i)
                {
-                       char filename[strlen(DATADIR) + 20];
-                       sprintf(filename, DATADIR "/enigma2/wait%d.png", i + 1);
-                       loadPNG(wait[i], filename);
+                       char filename[64];
+                       std::string rfilename;
+                       snprintf(filename, sizeof(filename), "${datadir}/enigma2/skin_default/spinner/wait%d.png", i + 1);
+                       rfilename = eEnv::resolve(filename);
+                       loadPNG(wait[i], rfilename.c_str());
                        
                        if (!wait[i])
                        {
                                if (!i)
-                                       eDebug("failed to load %s! (%m)", filename);
+                                       eDebug("failed to load %s! (%m)", rfilename.c_str());
                                else
                                        eDebug("found %d spinner!\n", i);
                                break;
@@ -243,12 +241,16 @@ int main(int argc, char **argv)
 
        setIoPrio(IOPRIO_CLASS_BE, 3);
 
-       python.execute("mytest", "__main__");
-       
+//     python.execute("mytest", "__main__");
+       python.execFile(eEnv::resolve("${libdir}/enigma2/python/mytest.py").c_str());
+
+       extern void setFullsize(); // definend in lib/gui/evideo.cpp
+       setFullsize();
+
        if (exit_code == 5) /* python crash */
        {
                eDebug("(exit code 5)");
-               bsodFatal();
+               bsodFatal(0);
        }
        
        dsk.paint();
@@ -280,6 +282,24 @@ void runMainloop()
 
 void quitMainloop(int exitCode)
 {
+       FILE *f = fopen("/proc/stb/fp/was_timer_wakeup", "w");
+       if (f)
+       {
+               fprintf(f, "%d", 0);
+               fclose(f);
+       }
+       else
+       {
+               int fd = open("/dev/dbox/fp0", O_WRONLY);
+               if (fd >= 0)
+               {
+                       if (ioctl(fd, 10 /*FP_CLEAR_WAKEUP_TIMER*/) < 0)
+                               eDebug("FP_CLEAR_WAKEUP_TIMER failed (%m)");
+                       close(fd);
+               }
+               else
+                       eDebug("open /dev/dbox/fp0 for wakeup timer clear failed!(%m)");
+       }
        exit_code = exitCode;
        eApp->quit(0);
 }
@@ -288,11 +308,25 @@ void quitMainloop(int exitCode)
 
 const char *getEnigmaVersionString()
 {
-       return 
-#ifdef ENIGMA2_CHECKOUT_TAG
-               ENIGMA2_CHECKOUT_TAG
+       std::string date =
+#ifdef ENIGMA2_LAST_CHANGE_DATE
+               ENIGMA2_LAST_CHANGE_DATE;
+#else
+               __DATE__;
+#endif
+       std::string branch =
+#ifdef ENIGMA2_BRANCH
+               ENIGMA2_BRANCH;
 #else
-               "HEAD"
+               "HEAD";
 #endif
-                       "-" __DATE__;
+       return std::string(date + '-' + branch).c_str();
+}
+
+#include <malloc.h>
+
+void dump_malloc_stats(void)
+{
+       struct mallinfo mi = mallinfo();
+       eDebug("MALLOC: %d total", mi.uordblks);
 }