diff src/main/qtopia/SDL_qtopia_main.cc @ 754:623b453a3219

Fixed "dist" make target for newer versions of automake
author Sam Lantinga <slouken@libsdl.org>
date Sun, 14 Dec 2003 06:25:53 +0000
parents
children 782fd950bd46 c121d94672cb
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/qtopia/SDL_qtopia_main.cc	Sun Dec 14 06:25:53 2003 +0000
@@ -0,0 +1,47 @@
+
+/* Include the SDL main definition header */
+#include "SDL_main.h"
+#include <stdlib.h>
+#include <unistd.h>
+#ifdef main
+#undef main
+#endif
+#ifdef QWS
+#include <qpe/qpeapplication.h>
+#include <qapplication.h>
+#include <qpe/qpeapplication.h>
+#include <stdlib.h>
+
+// Workaround for OPIE to remove taskbar icon. Also fixes
+// some issues in Qtopia where there are left-over qcop files in /tmp/.
+// I'm guessing this will also clean up the taskbar in the Sharp version
+// of Qtopia.
+static inline void cleanupQCop() {
+  QString appname(qApp->argv()[0]);
+  int slash = appname.findRev("/");
+  if(slash != -1) {  appname = appname.mid(slash+1); }
+  QString cmd = QPEApplication::qpeDir() + "bin/qcop QPE/System 'closing(QString)' '"+appname+"'";
+  system(cmd.latin1());
+  cmd = "/tmp/qcop-msg-"+appname;
+  unlink(cmd.latin1());
+}
+
+static QPEApplication *app;
+#endif
+
+extern int SDL_main(int argc, char *argv[]);
+
+int main(int argc, char *argv[])
+{
+#ifdef QWS
+  // This initializes the Qtopia application. It needs to be done here
+  // because it parses command line options.
+  app = new QPEApplication(argc, argv);
+  QWidget dummy;
+  app->showMainWidget(&dummy);
+  atexit(cleanupQCop);
+#endif
+  // Exit here because if return is used, the application
+  // doesn't seem to quit correctly.
+  exit(SDL_main(argc, argv));
+}