File diff r7169:b87d36998a2d → r7170:38b143754b40
src/video/cocoa_v.mm
Show inline comments
 
@@ -65,10 +65,12 @@ extern "C" void HideMenuBar();
 

	
 

	
 
#include "../stdafx.h"
 
#include "../openttd.h"
 
#include "../debug.h"
 
#include "../macros.h"
 
#include "../os/macosx/splash.h"
 
#include "../variables.h"
 
#include "../gfx.h"
 
#include "cocoa_v.h"
 
#include "cocoa_keys.h"
 
#include "../blitter/factory.hpp"
 
@@ -131,14 +133,13 @@ static void QZ_UpdatePalette(uint start,
 
static void QZ_WarpCursor(int x, int y);
 
static void QZ_ShowMouse();
 
static void QZ_HideMouse();
 
static void CocoaVideoFullScreen(bool full_screen);
 

	
 

	
 
static NSAutoreleasePool *_ottd_autorelease_pool;
 
static OTTDMain *_ottd_main;
 

	
 

	
 
static struct CocoaVideoData {
 
static struct VideoDriver_Cocoa::Data {
 
	bool isset;
 
	bool issetting;
 

	
 
@@ -366,7 +367,7 @@ static void QZ_KeyEvent(unsigned short k
 
		case QZ_RETURN:
 
		case QZ_f:
 
			if (down && (_cocoa_video_data.current_mods & NSCommandKeyMask)) {
 
				CocoaVideoFullScreen(!_fullscreen);
 
				_video_driver->ToggleFullscreen(!_fullscreen);
 
			}
 
			break;
 
	}
 
@@ -1319,9 +1320,9 @@ static uint32 QZ_FadeGammaIn(const OTTD_
 
	return 0;
 
}
 

	
 
static const char* QZ_SetVideoFullScreen(int width, int height)
 
static const char* QZ_SetVideoToggleFullscreen(int width, int height)
 
{
 
	const char* errstr = "QZ_SetVideoFullScreen error";
 
	const char* errstr = "QZ_SetVideoToggleFullscreen error";
 
	int exact_match;
 
	CFNumberRef number;
 
	int bpp;
 
@@ -1707,7 +1708,7 @@ static const char* QZ_SetVideoMode(uint 
 
	_cocoa_video_data.issetting = true;
 
	if (fullscreen) {
 
		/* Setup full screen video */
 
		ret = QZ_SetVideoFullScreen(width, height);
 
		ret = QZ_SetVideoToggleFullscreen(width, height);
 
	} else {
 
		/* Setup windowed video */
 
		ret = QZ_SetVideoWindowed(width, height);
 
@@ -1970,7 +1971,9 @@ static void setupApplication()
 
 *                             Video driver interface                         *
 
 ******************************************************************************/
 

	
 
static void CocoaVideoStop()
 
static FVideoDriver_Cocoa iFVideoDriver_Cocoa;
 

	
 
void VideoDriver_Cocoa::Stop()
 
{
 
	if (!_cocoa_video_started) return;
 

	
 
@@ -1981,7 +1984,7 @@ static void CocoaVideoStop()
 
	_cocoa_video_started = false;
 
}
 

	
 
static const char *CocoaVideoStart(const char * const *parm)
 
const char *VideoDriver_Cocoa::Start(const char * const *parm)
 
{
 
	const char *ret;
 

	
 
@@ -1998,12 +2001,12 @@ static const char *CocoaVideoStart(const
 
	QZ_VideoInit();
 

	
 
	ret = QZ_SetVideoMode(_cur_resolution[0], _cur_resolution[1], _fullscreen);
 
	if (ret != NULL) CocoaVideoStop();
 
	if (ret != NULL) VideoDriver_Cocoa::Stop();
 

	
 
	return ret;
 
}
 

	
 
static void CocoaVideoMakeDirty(int left, int top, int width, int height)
 
void VideoDriver_Cocoa::MakeDirty(int left, int top, int width, int height)
 
{
 
	if (_cocoa_video_data.num_dirty_rects < MAX_DIRTY_RECTS) {
 
		_cocoa_video_data.dirty_rects[_cocoa_video_data.num_dirty_rects].left = left;
 
@@ -2014,41 +2017,32 @@ static void CocoaVideoMakeDirty(int left
 
	_cocoa_video_data.num_dirty_rects++;
 
}
 

	
 
static void CocoaVideoMainLoop()
 
void VideoDriver_Cocoa::MainLoop()
 
{
 
	/* Start the main event loop */
 
	[NSApp run];
 
}
 

	
 
static bool CocoaVideoChangeRes(int w, int h)
 
bool VideoDriver_Cocoa::ChangeResolution(int w, int h)
 
{
 
	const char *ret = QZ_SetVideoModeAndRestoreOnFailure((uint)w, (uint)h, _cocoa_video_data.fullscreen);
 
	if (ret != NULL) {
 
		DEBUG(driver, 0, "cocoa_v: CocoaVideoChangeRes failed with message: %s", ret);
 
		DEBUG(driver, 0, "cocoa_v: VideoDriver_Cocoa::ChangeResolution failed with message: %s", ret);
 
	}
 

	
 
	return ret == NULL;
 
}
 

	
 
static void CocoaVideoFullScreen(bool full_screen)
 
void VideoDriver_Cocoa::ToggleFullscreen(bool full_screen)
 
{
 
	const char *ret = QZ_SetVideoModeAndRestoreOnFailure(_cocoa_video_data.width, _cocoa_video_data.height, full_screen);
 
	if (ret != NULL) {
 
		DEBUG(driver, 0, "cocoa_v: CocoaVideoFullScreen failed with message: %s", ret);
 
		DEBUG(driver, 0, "cocoa_v: VideoDriver_Cocoa::ToggleFullscreen failed with message: %s", ret);
 
	}
 

	
 
	_fullscreen = _cocoa_video_data.fullscreen;
 
}
 

	
 
const HalVideoDriver _cocoa_video_driver = {
 
	CocoaVideoStart,
 
	CocoaVideoStop,
 
	CocoaVideoMakeDirty,
 
	CocoaVideoMainLoop,
 
	CocoaVideoChangeRes,
 
	CocoaVideoFullScreen,
 
};
 

	
 

	
 
/* This is needed since sometimes assert is called before the videodriver is initialized */
 
void CocoaDialog(const char* title, const char* message, const char* buttonLabel)
 
@@ -2058,14 +2052,14 @@ void CocoaDialog(const char* title, cons
 
	_cocoa_video_dialog = true;
 

	
 
	wasstarted = _cocoa_video_started;
 
	if (!_cocoa_video_started && CocoaVideoStart(NULL) != NULL) {
 
	if (!_cocoa_video_started && VideoDriver_Cocoa::Start(NULL) != NULL) {
 
		fprintf(stderr, "%s: %s\n", title, message);
 
		return;
 
	}
 

	
 
	NSRunAlertPanel([NSString stringWithCString: title], [NSString stringWithCString: message], [NSString stringWithCString: buttonLabel], nil, nil);
 

	
 
	if (!wasstarted) CocoaVideoStop();
 
	if (!wasstarted) VideoDriver_Cocoa::Stop();
 

	
 
	_cocoa_video_dialog = false;
 
}