EDU-658 Create placeholder without selection
[idea/community.git] / native / MacLauncher / main.m
1 #import "Launcher.h"
2
3 #define FOREVER ((CFTimeInterval) 1e20)
4
5 static void timer_empty(CFRunLoopTimerRef timer, void *info) {
6 }
7
8 static void parkRunLoop() {
9     CFRunLoopTimerRef t = CFRunLoopTimerCreate(kCFAllocatorDefault, FOREVER, (CFTimeInterval)0.0, 0, 0, timer_empty, NULL);
10     CFRunLoopAddTimer(CFRunLoopGetCurrent(), t, kCFRunLoopDefaultMode);
11     CFRelease(t);
12
13     SInt32 result;
14     do {
15         result = CFRunLoopRunInMode(kCFRunLoopDefaultMode, FOREVER, false);
16     } while (result != kCFRunLoopRunFinished);
17 }
18
19 static void makeSameStackSize(NSThread *thread) {
20     struct rlimit l;
21     int err = getrlimit(RLIMIT_STACK, &l);
22     if (err == ERR_SUCCESS && l.rlim_cur > 0) {
23         thread.stackSize = (NSUInteger) l.rlim_cur;
24     }
25 }
26
27 static void launchInNewThread(Launcher *launcher) {
28    NSThread *thread = [[[NSThread alloc] initWithTarget:launcher selector:@selector(launch) object:nil] autorelease];
29    makeSameStackSize(thread);
30    [thread start];
31
32 }
33
34 int main(int argc, char *argv[]) {
35     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
36     if (validationJavaVersion()){
37         launchInNewThread([[[Launcher alloc] initWithArgc:argc argv:argv] autorelease]);
38         parkRunLoop();
39     }
40     [pool release];
41     return 0;
42 }