Derelict / SDL error

Paul via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Dec 8 04:53:10 PST 2014


Sorry this is a bit off topic but as there doesn't seem to be an 
active forum for Derelict atm....

This simple test code is giving me an error 'Error executing 
command run: Program exited with code -11' (or a seg fault if 
executed from a terminal). The problem line is:

SDL_RenderCopy(renderer, texture, &sourceRect, &destRect);

I've tried this call with the 'null' options as well as passing 
the address of the rects but neither works (I've also tried 
manually assigning the various struct components rather than 
using the c style initialisation in case that was the problem).

Any ideas please?

import derelict.sdl2.sdl;
import std.stdio;

void main()
{
     scope(exit) SDL_Quit();

     DerelictSDL2.load();
     writeln( "SDL loaded ok");


     //init sdl
	if (SDL_Init(SDL_INIT_EVERYTHING) != 0){
		writeln("SDL_Init Error: ", SDL_GetError() );
		return;
	}
		
	//open a window
	SDL_Window *window = SDL_CreateWindow("Window Title!", 100, 100, 
640, 480, SDL_WINDOW_SHOWN);
	if (window == null){
		writeln("SDL_CreateWindow Error: ", SDL_GetError() );
		return;
	}	
		
	//get a renderer (ie buffer), use software renderer for now
	SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, 
SDL_RENDERER_SOFTWARE);
	if (renderer == null){
		writeln( "SDL_CreateRenderer Error: " , SDL_GetError() );
		return;
	}
	
	//load a bitmap
	SDL_Surface *image = SDL_LoadBMP("./test.bmp");
	if (image == null){
		writeln( "SDL_LoadBMP error: " , SDL_GetError() );
		return;
	}	
	
	//create texture for bitmap
	SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, 
image);
	if (texture == null){
		writeln( "CreateTextureFromSurface error: " , SDL_GetError() );
		return;
	}		
	
     //copy to renderer at correct position & scale
     SDL_Rect sourceRect = { 0, 0, 64, 64 };
     SDL_Rect destRect = { 100, 100, 64, 64 };
     SDL_RenderCopy(renderer, texture, &sourceRect, &destRect);	
		
	
     //display and pause
     SDL_RenderPresent(renderer);
     SDL_Delay(2000);
	
		
}


More information about the Digitalmars-d-learn mailing list