1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant/* Include the SDL main definition header */
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant#include "SDL_main.h"
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <stdlib.h>
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant#include <unistd.h>
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant#ifdef main
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#undef main
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifdef QWS
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <qpe/qpeapplication.h>
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <qapplication.h>
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <qpe/qpeapplication.h>
13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <stdlib.h>
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// Workaround for OPIE to remove taskbar icon. Also fixes
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// some issues in Qtopia where there are left-over qcop files in /tmp/.
17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// I'm guessing this will also clean up the taskbar in the Sharp version
1883e2c4d877fe2d7793868b1c6a5d9525a7c4d431Marshall Clow// of Qtopia.
19c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnantstatic inline void cleanupQCop() {
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  QString appname(qApp->argv()[0]);
21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  int slash = appname.findRev("/");
22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  if(slash != -1) {  appname = appname.mid(slash+1); }
23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  QString cmd = QPEApplication::qpeDir() + "bin/qcop QPE/System 'closing(QString)' '"+appname+"'";
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  system(cmd.latin1());
25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  cmd = "/tmp/qcop-msg-"+appname;
26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  unlink(cmd.latin1());
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}
28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantstatic QPEApplication *app;
30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantextern int SDL_main(int argc, char *argv[]);
33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main(int argc, char *argv[])
35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifdef QWS
37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  // This initializes the Qtopia application. It needs to be done here
38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  // because it parses command line options.
39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  app = new QPEApplication(argc, argv);
40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  QWidget dummy;
41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  app->showMainWidget(&dummy);
42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  atexit(cleanupQCop);
43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  // Exit here because if return is used, the application
45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  // doesn't seem to quit correctly.
46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant  exit(SDL_main(argc, argv));
47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}
48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant