Edit

kc3-lang/SDL/src/main/winrt

Branch :

  • Show log

    Commit

  • Author : Pierre-Loup A. Griffais
    Date : 2014-09-11 19:24:42
    Hash : 24c86b55
    Message : [X11] Reconcile logical keyboard state with physical state on FocusIn since the window system doesn't do it for us like other platforms. This prevents sticky keys and missed keys when going in and out of focus, for example Alt would appear to stick if switching away from an SDL app with Alt-Tab and had to be pressed again. CR: Sam

  • SDL_winrt_main_NonXAML.cpp
  • /*
        SDL_winrt_main_NonXAML.cpp, placed in the public domain by David Ludwig  3/13/14
    */
    
    #include "SDL_main.h"
    #include <wrl.h>
    
    /* At least one file in any SDL/WinRT app appears to require compilation
       with C++/CX, otherwise a Windows Metadata file won't get created, and
       an APPX0702 build error can appear shortly after linking.
    
       The following set of preprocessor code forces this file to be compiled
       as C++/CX, which appears to cause Visual C++ 2012's build tools to
       create this .winmd file, and will help allow builds of SDL/WinRT apps
       to proceed without error.
    
       If other files in an app's project enable C++/CX compilation, then it might
       be possible for SDL_winrt_main_NonXAML.cpp to be compiled without /ZW,
       for Visual C++'s build tools to create a winmd file, and for the app to
       build without APPX0702 errors.  In this case, if
       SDL_WINRT_METADATA_FILE_AVAILABLE is defined as a C/C++ macro, then
       the #error (to force C++/CX compilation) will be disabled.
    
       Please note that /ZW can be specified on a file-by-file basis.  To do this,
       right click on the file in Visual C++, click Properties, then change the
       setting through the dialog that comes up.
    */
    #ifndef SDL_WINRT_METADATA_FILE_AVAILABLE
    #ifndef __cplusplus_winrt
    #error SDL_winrt_main_NonXAML.cpp must be compiled with /ZW, otherwise build errors due to missing .winmd files can occur.
    #endif
    #endif
    
    /* Prevent MSVC++ from warning about threading models when defining our
       custom WinMain.  The threading model will instead be set via a direct
       call to Windows::Foundation::Initialize (rather than via an attributed
       function).
    
       To note, this warning (C4447) does not seem to come up unless this file
       is compiled with C++/CX enabled (via the /ZW compiler flag).
    */
    #ifdef _MSC_VER
    #pragma warning(disable:4447)
    #endif
    
    /* Make sure the function to initialize the Windows Runtime gets linked in. */
    #ifdef _MSC_VER
    #pragma comment(lib, "runtimeobject.lib")
    #endif
    
    int CALLBACK WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
        if (FAILED(Windows::Foundation::Initialize(RO_INIT_MULTITHREADED))) {
            return 1;
        }
    
        SDL_WinRTRunApp(SDL_main, NULL);
        return 0;
    }