gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Occasional NSInternalInconsistencyException


From: Gregory Casamento
Subject: Re: Occasional NSInternalInconsistencyException
Date: Tue, 19 Nov 2019 17:25:49 -0500

The proper way to do this would be to bring up the panel in the applicationDidFinishLaunching: method in the NSApplication delegate.  This way the runloop is running and processing events.  I can't pinpoint in my mind the exact line of code, but I am reasonably certain that this should avoid your problem.

Mailtrack Sender notified by
Mailtrack 11/19/19, 05:24:31 PM

On Tue, Nov 19, 2019 at 1:07 PM Ivan Vučica <address@hidden> wrote:
Would the bug here, then, be that alerts don't check for this edge case?

Patryk: I'd merge a pull request that makes -[NSAlert runModal] check
for an active runloop.

On Tue, Nov 19, 2019 at 5:49 PM Gregory Casamento
<address@hidden> wrote:
>
> Running modal panels requires the application run loop to be active.    You're not doing that.   I suggest you take a look at some of the application examples for how to do what you want here.
>
> On Tue, Nov 19, 2019, 10:34 AM Patryk Laurent <address@hidden> wrote:
>>
>>
>> > On Nov 18, 2019, at 09:16, Wolfgang Lux <address@hidden> wrote:
>> >
>> >> Am 18.11.2019 um 04:43 schrieb Patryk Laurent <address@hidden>:
>> >> “Uncaught exception NSInternalInconsistencyException, reason: registration with registered client.”
>> >
>> > The error message itself is coming from NSDistributedNotificationCenter and it looks like it's caused by a race condition when two threads in your program are adding an observer to the distribution notification center at about the same time.
>>
>> Thanks, Wolfgang. I find this surprising because my program is minimal (source code below). I wasn’t getting this before, will look for what has changed...
>>
>> Patryk
>>
>> #import <AppKit/AppKit.h>
>>
>> int main()
>> {
>>   NSApplication *app;
>>   app = [NSApplication sharedApplication];
>>
>>   NSAlert * alert = [[NSAlert alloc] init];
>>   [alert setMessageText:@"Hello alert"];
>>   [alert addButtonWithTitle:@"All done"];
>>   int result = [alert runModal];
>>   if (result == NSAlertFirstButtonReturn) {
>>     NSLog(@"First button pressed");
>>   }
>> }
>>
>>
>>
>>
>>
>>


--
Gregory Casamento
GNUstep Lead Developer / OLC, Principal Consultant
http://www.gnustep.org - http://heronsperch.blogspot.com
http://ind.ie/phoenix/

reply via email to

[Prev in Thread] Current Thread [Next in Thread]