test/testwm2.c
author David Ludwig <dludwig@pobox.com>
Wed, 25 Dec 2013 21:39:48 -0500
changeset 8563 c0e68f3b6bbb
parent 7663 53fe1b64eb2d
child 8149 681eb46b8ac4
permissions -rw-r--r--
WinRT: compiled the d3d11 renderer's shaders into SDL itself

Previously, the shaders would get compiled separately, the output of which would need to be packaged into the app. This change should make SDL's dll be the only binary needed to include SDL in a WinRT app.
     1 /*
     2   Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
     3 
     4   This software is provided 'as-is', without any express or implied
     5   warranty.  In no event will the authors be held liable for any damages
     6   arising from the use of this software.
     7 
     8   Permission is granted to anyone to use this software for any purpose,
     9   including commercial applications, and to alter it and redistribute it
    10   freely.
    11 */
    12 
    13 #include <stdlib.h>
    14 #include <stdio.h>
    15 
    16 #include "SDL_test_common.h"
    17 
    18 static SDLTest_CommonState *state;
    19 
    20 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
    21 static void
    22 quit(int rc)
    23 {
    24     SDLTest_CommonQuit(state);
    25     exit(rc);
    26 }
    27 
    28 int
    29 main(int argc, char *argv[])
    30 {
    31     static const char *cursorNames[] = {
    32         "arrow",
    33         "ibeam",
    34         "wait",
    35         "crosshair",
    36         "waitarrow",
    37         "sizeNWSE",
    38         "sizeNESW",
    39         "sizeWE",
    40         "sizeNS",
    41         "sizeALL",
    42         "NO",
    43         "hand",
    44     };
    45 
    46     int i, done;
    47     SDL_Event event;
    48     int system_cursor = -1;
    49     SDL_Cursor *cursor = NULL;
    50 
    51 	/* Enable standard application logging */
    52     SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
    53 
    54     SDL_assert(SDL_arraysize(cursorNames) == SDL_NUM_SYSTEM_CURSORS);
    55 
    56     /* Initialize test framework */
    57     state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
    58     if (!state) {
    59         return 1;
    60     }
    61     state->skip_renderer = SDL_TRUE;
    62     for (i = 1; i < argc;) {
    63         int consumed;
    64 
    65         consumed = SDLTest_CommonArg(state, i);
    66         if (consumed == 0) {
    67             consumed = -1;
    68         }
    69         if (consumed < 0) {
    70             SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state));
    71             quit(1);
    72         }
    73         i += consumed;
    74     }
    75     if (!SDLTest_CommonInit(state)) {
    76         quit(2);
    77     }
    78 
    79     /* Main render loop */
    80     done = 0;
    81     while (!done) {
    82         /* Check for events */
    83         while (SDL_PollEvent(&event)) {
    84             SDLTest_CommonEvent(state, &event, &done);
    85 
    86             if (event.type == SDL_WINDOWEVENT) {
    87                 if (event.window.event == SDL_WINDOWEVENT_RESIZED) {
    88                     SDL_Window *window = SDL_GetWindowFromID(event.window.windowID);
    89                     if (window) {
    90                         SDL_Log("Window %d resized to %dx%d\n",
    91                             event.window.windowID,
    92                             event.window.data1,
    93                             event.window.data2);
    94                     }
    95                 }
    96                 if (event.window.event == SDL_WINDOWEVENT_MOVED) {
    97                     SDL_Window *window = SDL_GetWindowFromID(event.window.windowID);
    98                     if (window) {
    99                         SDL_Log("Window %d moved to %d,%d (display %s)\n",
   100                             event.window.windowID,
   101                             event.window.data1,
   102                             event.window.data2,
   103                             SDL_GetDisplayName(SDL_GetWindowDisplayIndex(window)));
   104                     }
   105                 }
   106             }
   107             if (event.type == SDL_KEYUP) {
   108                 SDL_bool updateCursor = SDL_FALSE;
   109 
   110                 if (event.key.keysym.sym == SDLK_LEFT) {
   111                     --system_cursor;
   112                     if (system_cursor < 0) {
   113                         system_cursor = SDL_NUM_SYSTEM_CURSORS - 1;
   114                     }
   115                     updateCursor = SDL_TRUE;
   116                 } else if (event.key.keysym.sym == SDLK_RIGHT) {
   117                     ++system_cursor;
   118                     if (system_cursor >= SDL_NUM_SYSTEM_CURSORS) {
   119                         system_cursor = 0;
   120                     }
   121                     updateCursor = SDL_TRUE;
   122                 }
   123                 if (updateCursor) {
   124                     SDL_Log("Changing cursor to \"%s\"", cursorNames[system_cursor]);
   125                     SDL_FreeCursor(cursor);
   126                     cursor = SDL_CreateSystemCursor((SDL_SystemCursor)system_cursor);
   127                     SDL_SetCursor(cursor);
   128                 }
   129             }
   130         }
   131     }
   132     SDL_FreeCursor(cursor);
   133 
   134     quit(0);
   135     /* keep the compiler happy ... */
   136     return(0);
   137 }
   138 
   139 /* vi: set ts=4 sw=4 expandtab: */