summaryrefslogtreecommitdiff
path: root/macosx/plugins/DFNet/macsrc/SockDialog.m
blob: cbef65b5ba3907915e2dc3ee985c7b94b541361d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
//
//  SockDialog.m
//  DFNet
//
//  Created by C.W. Betts on 2/18/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "SockDialog.h"
#include "dfnet.h"

#import "EmuThread.h"

void SysMessage(const char *fmt, ...)
{
	va_list list;
	va_start(list, fmt);
	NSString *errString = [[NSString alloc] initWithFormat:@(fmt) arguments:list];
	va_end(list);
	
	fprintf(stderr, "message %s\n", [errString UTF8String]);
	NSAlert *alert = [NSAlert alertWithMessageText:@"Error" defaultButton:@"Stop" alternateButton:nil otherButton:nil informativeTextWithFormat:@"%@", errString];
	[alert setAlertStyle:NSCriticalAlertStyle];
	NSInteger result = [alert runModal];
	if (result == NSAlertDefaultReturn) {
		Class theEmuClass = NSClassFromString(@"EmuThread");
		if (theEmuClass) {
			[theEmuClass stop];
		} else {
			NSLog(@"Unable to stop emulation because the Objective-C class \"EmuThreaed\" was not found.");
			NSLog(@"Are you using a different emulator than PCSXR?");
		}
	}
}

static inline void RunOnMainThreadSync(dispatch_block_t block)
{
	if ([NSThread isMainThread]) {
		block();
	} else {
		dispatch_sync(dispatch_get_main_queue(), block);
	}
}

static SockDialog *globalSock = nil;

void sockCreateWaitDlg()
{
	RunOnMainThreadSync(^{
		if (globalSock == nil) {
			globalSock = [[SockDialog alloc] init];
		}
		NSWindow *tempWindow = [globalSock window];
		[tempWindow center];
		[globalSock showWindow:nil];
		[tempWindow makeKeyAndOrderFront:nil];
	});
}

void sockDlgUpdate()
{
	
}

long sockOpen()
{
	LoadConf();
	
	return 0;
}

void sockDestroyWaitDlg()
{
	RunOnMainThreadSync(^{
		if (globalSock != nil) {
			[globalSock close];
			globalSock = nil;
		}
	});
}

@implementation SockDialog
@synthesize spinningBar;

- (IBAction)cancel:(id)sender {
	WaitCancel = 1;
}

- (instancetype)init
{
	return self = [self initWithWindowNibName:@"SockDialog"];
}

- (void)awakeFromNib
{
	[spinningBar startAnimation:nil];
}

@end