annotate test/testloadso.c @ 4391:07b330419439 SDL-1.2

Fixed bug #849 some more: Tim Angus 2009-11-26 14:41:04 PST Fix to the cursor not being responsive when the app doesn't have SDL_APPINPUTFOCUS The problems with the directx driver are similar to the ones I introduced in the windib driver with r4478. Basically if the application did not have focus, the mouse position is not updated. It's not really that the mouse cursor was invisible, it's that it is stuck underneath another window where you can't see it. This behaviour predates my r4478 changes and is the reason I unwittingly broke the windib driver as I had been replicating the way the directx driver deals with focus. Prior to r4478 the directx driver could not be used in windowed mode, so the broken focusing would not have actually been observable. Anyway, the attached patch makes the directx driver behaves like the windib driver in terms of focus. Time for 1.2.15? ;) I've added an additional change of moving the calls to WIN_GrabInput that are made on WM_ACTIVATE messages so that they only occur when the state is SDL_APPINPUTFOCUS. When a fullscreen application is minimised using alt-tab, it still receives WM_ACTIVATE messages when other applications are selected. If WIN_GrabInput is called when the SDL application doesn't have input focus, bad things happen; it shouldn't be being called at all. I've also added a line to make sure that SDL_APPMOUSEFOCUS state is dropped when the application is minimised following an alt-tab.
author Sam Lantinga <slouken@libsdl.org>
date Fri, 11 Dec 2009 15:24:53 +0000
parents f1699aecb65d
children 2c835d58faad
rev   line source
3892
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
1
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
2 /* Test program to test dynamic loading with the loadso subsystem.
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
3 */
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
4
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
5 #include <stdio.h>
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
6 #include <stdlib.h>
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
7
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
8 #include "SDL.h"
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
9
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
10 typedef int (*fntype)(const char *);
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
11
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
12 int main(int argc, char *argv[])
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
13 {
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
14 int retval = 0;
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
15 int hello = 0;
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
16 const char *libname = NULL;
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
17 const char *symname = NULL;
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
18 void *lib = NULL;
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
19 fntype fn = NULL;
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
20
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
21 if (argc != 3) {
3893
f1699aecb65d Man, who let this moron near printf()?! :)
Ryan C. Gordon <icculus@icculus.org>
parents: 3892
diff changeset
22 const char *app = argv[0];
f1699aecb65d Man, who let this moron near printf()?! :)
Ryan C. Gordon <icculus@icculus.org>
parents: 3892
diff changeset
23 fprintf(stderr, "USAGE: %s <library> <functionname>\n", app);
f1699aecb65d Man, who let this moron near printf()?! :)
Ryan C. Gordon <icculus@icculus.org>
parents: 3892
diff changeset
24 fprintf(stderr, " %s --hello <lib with puts()>\n", app);
3892
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
25 return 1;
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
26 }
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
27
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
28 /* Initialize SDL */
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
29 if ( SDL_Init(0) < 0 ) {
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
30 fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
31 return 2;
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
32 }
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
33
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
34 if (strcmp(argv[1], "--hello") == 0) {
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
35 hello = 1;
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
36 libname = argv[2];
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
37 symname = "puts";
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
38 } else {
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
39 libname = argv[1];
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
40 symname = argv[2];
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
41 }
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
42
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
43 lib = SDL_LoadObject(libname);
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
44 if (lib == NULL) {
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
45 fprintf(stderr, "SDL_LoadObject('%s') failed: %s\n",
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
46 libname, SDL_GetError());
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
47 retval = 3;
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
48 } else {
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
49 fn = (fntype) SDL_LoadFunction(lib, symname);
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
50 if (fn == NULL) {
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
51 fprintf(stderr, "SDL_LoadFunction('%s') failed: %s\n",
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
52 symname, SDL_GetError());
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
53 retval = 4;
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
54 } else {
3893
f1699aecb65d Man, who let this moron near printf()?! :)
Ryan C. Gordon <icculus@icculus.org>
parents: 3892
diff changeset
55 printf("Found %s in %s at %p\n", symname, libname, fn);
3892
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
56 if (hello) {
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
57 printf("Calling function...\n");
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
58 fflush(stdout);
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
59 fn(" HELLO, WORLD!\n");
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
60 printf("...apparently, we survived. :)\n");
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
61 printf("Unloading library...\n");
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
62 fflush(stdout);
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
63 }
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
64 }
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
65 SDL_UnloadObject(lib);
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
66 }
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
67 SDL_Quit();
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
68 return(0);
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
69 }
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
70
b25dd008167b Added a test program for loadso subsystem.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
71