Mercurial > sdl-ios-xcode
annotate src/main/linux/SDL_Qtopia_main.cc @ 615:7ec821f3cbd0
Date: Thu, 17 Apr 2003 23:27:34 -0400
From: Darrell Walisser
Subject: Yet another OS X cursor bug
The synopsis:
1. Call SDL_ShowCursor(0);
2. Call SDL_SetVideoMode();
3. Call SDL_GetEvent();
3. Call SDL_ShowCursor(1);
The result: Sometimes the cursor doesn't come back! Ack! Oddly enough,
it does come back when mousing over the dock or clicking in the menu
bar. But that's besides the point.
The reason why this is happening is a flaw in the handling of
activation/deactivation events. The short explanation is that the
HideCursor() and ShowCursor() calls must be balanced, but if the cursor
was initially hidden, HideCursor() was called again on the activate
event - so now the next ShowCursor() fails (as does the next, and the
next, for some reason).
So, here's the patch. All it does is keep track of the
HideCursor()/ShowCursor() calls so that they will always be balanced.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 20 Apr 2003 05:41:16 +0000 |
parents | 0648505b1f8b |
children |
rev | line source |
---|---|
371
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 /* Include the SDL main definition header */ |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
3 #include "SDL_main.h" |
567 | 4 #include <stdlib.h> |
5 #include <unistd.h> | |
371
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 #ifdef main |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 #undef main |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 #endif |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 #ifdef QWS |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 #include <qpe/qpeapplication.h> |
567 | 11 #include <qapplication.h> |
12 #include <qpe/qpeapplication.h> | |
13 #include <stdlib.h> | |
14 | |
15 // Workaround for OPIE to remove taskbar icon. Also fixes | |
16 // some issues in Qtopia where there are left-over qcop files in /tmp/. | |
17 // I'm guessing this will also clean up the taskbar in the Sharp version | |
18 // of Qtopia. | |
19 static inline void cleanupQCop() { | |
20 QString appname(qApp->argv()[0]); | |
21 int slash = appname.findRev("/"); | |
22 if(slash != -1) { appname = appname.mid(slash+1); } | |
23 QString cmd = QPEApplication::qpeDir() + "bin/qcop QPE/System 'closing(QString)' '"+appname+"'"; | |
24 system(cmd.latin1()); | |
25 cmd = "/tmp/qcop-msg-"+appname; | |
26 unlink(cmd.latin1()); | |
27 } | |
28 | |
29 static QPEApplication *app; | |
371
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
30 #endif |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
31 |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
32 extern int SDL_main(int argc, char *argv[]); |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
33 |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
34 int main(int argc, char *argv[]) |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
35 { |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
36 #ifdef QWS |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
37 // This initializes the Qtopia application. It needs to be done here |
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
38 // because it parses command line options. |
612
0648505b1f8b
Fixed video intitialization problem on Qtopia (thanks David!)
Sam Lantinga <slouken@libsdl.org>
parents:
567
diff
changeset
|
39 app = new QPEApplication(argc, argv); |
371
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
40 QWidget dummy; |
567 | 41 app->showMainWidget(&dummy); |
42 atexit(cleanupQCop); | |
371
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
43 #endif |
394
d15bef937f00
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
379
diff
changeset
|
44 // Exit here because if return is used, the application |
d15bef937f00
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
379
diff
changeset
|
45 // doesn't seem to quit correctly. |
d15bef937f00
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
379
diff
changeset
|
46 exit(SDL_main(argc, argv)); |
371
db0cc6034336
Added David Hedbor's Qtopia patches
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
47 } |