[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Command lien tools that use appkit
From: |
Fred Kiefer |
Subject: |
Re: Command lien tools that use appkit |
Date: |
Wed, 30 May 2012 23:14:43 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120421 Thunderbird/12.0 |
I have pondered over this patch for quite a while now and I am still
undecided. It does no harm, but it also works around a problem that
should not be there. When you don't need NSApplicationMain() you should
juts not call it.
Here is your main function:
int main(int argc, const char ** argv) {
AppController * controller = [AppController new];
[[NSApplication sharedApplication] setDelegate:controller];
return NSApplicationMain(argc, argv);
}
I don't see why you need to call NSApplicationMain here. This is my
standard main function for tools:
int main (int argc, const char *argv[])
{
CREATE_AUTORELEASE_POOL(pool);
id app;
app = [NSApplication sharedApplication];
[app setDelegate: [AppController new]];
[app run];
RELEASE(pool);
return 0;
}
This surely can be improved on as well. What we need is another macro
for the pool release to get this correct for all our different supported
compiler setups.
Fred
On 23.05.2012 13:19, Ivan Vučica wrote:
Hi,
for QuartzCore I'll be implementing small command-line tools that in fact
open an AppKit window with NSOpenGLView as the content view.
This sort of thing is not officially supported in Cocoa (a bundle is
required, or hacks with CPSEnableForegroundOperation() are required).
However, it works just fine with GNUstep.
Except for one small error that I just noticed and don't remember seeing
before.
"Bad application class '(null)' specified"
Looks like in gui's Source/Functions.m, NSApplicationMain() is explicitly
demanding that the bundle and its info dictionary exist, and that
NSPrincipalClass is specified, instead of either defaulting to
NSApplication, or simply checking whether the class is already initialized.
Since NSApp is a global variable, this should work fine:
Index: Source/Functions.m
===================================================================
--- Source/Functions.m (revision 35156)
+++ Source/Functions.m (working copy)
@@ -70,7 +70,7 @@
className = [infoDict objectForKey: @"NSPrincipalClass"];
appClass = NSClassFromString(className);
- if (appClass == 0)
+ if (appClass == 0&& NSApp == nil)
{
NSLog(@"Bad application class '%@' specified", className);
appClass = [NSApplication class];
Thoughts?
_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustep@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnustep