2

I'm running the Ubuntu app on my windows 10 computer and I'm having trouble getting a SDL program to display with Xming.

Here is the error I get:

Xlib:  extension "MIT-SHM" missing on display ":0".
Xlib:  extension "MIT-SHM" missing on display ":0".
Xlib:  extension "MIT-SHM" missing on display ":0".

and here is the sdl code:

    /*This source code copyrighted by Lazy Foo' Productions (2004-2019)
and may not be redistributed without written permission.*/

//Using SDL and standard IO
#include <stdio.h>
#include<SDL2/SDL.h>

//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

int main( int argc, char* args[] ) {

    //The window we'll be rendering to
    SDL_Window* window = NULL;

    //The surface contained by the window
    SDL_Surface* screenSurface = NULL;

    //Initialize SDL
    if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
    {
        printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
    }
    else
    {
        //Create window
        window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT,SDL_WINDOW_SHOWN );
        if( window == NULL )
        {
            printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
        }
        else
        {
            //Get window surface
            screenSurface = SDL_GetWindowSurface( window );

            //Fill the surface white
            SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF ) );

            //Update the surface
            SDL_UpdateWindowSurface( window );

            //Wait two seconds
            SDL_Delay( 2000 );
        }
    }

    //Destroy window
    SDL_DestroyWindow( window );

    //Quit SDL subsystems
    SDL_Quit();

    return 0;
}

Xming is able to work with OpenGL programs just fine so I'm not sure on what I need to do in order to fix this issue. Any help would be greatly appreciated.

Axl
  • 21

1 Answers1

0

I had similar problem with SDL app, when I tried to run it from WSL-1 (Ubuntu on Windows). I tested several X servers and the only one that worked was VcXsrv that comes with SmarTTY and has version 1.19.3.4. Interestingly enough, standalone VcXsrv that has version 1.20.8.1 doesn't work as well as XMing.

So the setup is the following:

  1. Download SmarTTY portable

  2. Go to \SmarttyPortable\VcXsrv and run vcxsrv.exe (don't run xlaunch.exe)

  3. In Ubuntu run (not sure that every command is needed)

    export DISPLAY=:0
    export LIBGL_ALWAYS_INDIRECT=1
    sudo service dbus start
    ./your-app
    

P.S. The app that I try to run is Cataclysm DDA game that uses SDL. I can't run it directly on Windows because somehow Digital Guardian (DGAgent.exe) blocks it so game crashes in seconds after start. So I had to run in WSL Ubuntu with above solution.

nt86
  • 131