dont show infobar when a dvd menu is visible
[enigma2.git] / main / bsod.cpp
index 938ddd2bf7adba8457b7472df503e7d8adf30185..3352a29e9276442a2061380dda826693febbc6fd 100644 (file)
@@ -6,6 +6,9 @@
 #include <lib/base/smartptr.h>
 #include <lib/gdi/grc.h>
 #include <lib/gdi/gfbdc.h>
+#ifdef WITH_SDL
+#include <lib/gdi/sdl.h>
+#endif
 
 #include "version.h"
 
@@ -86,10 +89,19 @@ void bsodFatal()
                std::string buffer = getLogBuffer();
                fwrite(buffer.c_str(), buffer.size(), 1, f);
                fclose(f);
+               
+               char cmd[256];
+               sprintf(cmd, "find /usr/lib/enigma2/python/ -name \"*.py\" | xargs md5sum >> %s", logfile);
+               system(cmd);
        }
        
+#ifdef WITH_SDL
+       ePtr<gSDLDC> my_dc;
+       gSDLDC::getInstance(my_dc);
+#else
        ePtr<gFBDC> my_dc;
        gFBDC::getInstance(my_dc);
+#endif
        
        {
                gPainter p(my_dc);
@@ -132,7 +144,6 @@ void bsodFatal()
        
                p.renderText(usable_area, 
                        lines.substr(start), gPainter::RT_HALIGN_LEFT);
-               p.flush();
                sleep(10);
        }
 
@@ -172,7 +183,7 @@ void handleFatalSignal(int signum, siginfo_t *si, void *ctx)
        ucontext_t *uc = (ucontext_t*)ctx;
        eDebug("KILLED BY signal %d", signum);
 #ifndef NO_OOPS_SUPPORT
-       oops(uc->uc_mcontext, signum == SIGSEGV);
+       oops(uc->uc_mcontext, signum == SIGSEGV || signum == SIGABRT);
 #endif
        eDebug("-------");
        bsodFatal();
@@ -191,6 +202,7 @@ void bsodCatchSignals()
        sigaction(SIGSEGV, &act, 0);
        sigaction(SIGILL, &act, 0);
        sigaction(SIGBUS, &act, 0);
+       sigaction(SIGABRT, &act, 0);
 }
 
 void bsodLogInit()