Files @ r3016:b28a60dfd364
Branch filter:

Location: cpp/openttd-patchpack/source/video/null_v.c

bjarni
(svn r3596) -Codechange: [OSX] changed to use Apple's macros instead of OTTD macros for endian conversion
This increases the execution speed a lot since GCC can't detect the OTTD macro as an endian conversion
while Apple's code uses the instruction to convert endian instead of a series of instructions to produce the same result

Since we don't have that many endian conversions in the game, overall performance should not increase noteworthy
/* $Id$ */

#include "../stdafx.h"
#include "../openttd.h"
#include "../gfx.h"
#include "../variables.h"
#include "../window.h"
#include "null_v.h"

static void* _null_video_mem = NULL;

static const char* NullVideoStart(const char* const* parm)
{
	_screen.width = _screen.pitch = _cur_resolution[0];
	_screen.height = _cur_resolution[1];
	_null_video_mem = malloc(_cur_resolution[0] * _cur_resolution[1]);
	return NULL;
}

static void NullVideoStop(void) { free(_null_video_mem); }

static void NullVideoMakeDirty(int left, int top, int width, int height) {}

static void NullVideoMainLoop(void)
{
	uint i;

	for (i = 0; i < 1000; i++) {
		GameLoop();
		_screen.dst_ptr = _null_video_mem;
		UpdateWindows();
	}
}

static bool NullVideoChangeRes(int w, int h) { return false; }
static void NullVideoFullScreen(bool fs) {}

const HalVideoDriver _null_video_driver = {
	NullVideoStart,
	NullVideoStop,
	NullVideoMakeDirty,
	NullVideoMainLoop,
	NullVideoChangeRes,
	NullVideoFullScreen,
};