discuss-gnustep
[Top][All Lists]
Advanced

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

Re: Scheduling functions to be run all the time in runloop


From: Dr. H. Nikolaus Schaller
Subject: Re: Scheduling functions to be run all the time in runloop
Date: Mon, 9 Jul 2012 22:58:12 +0200

Am 09.07.2012 um 22:52 schrieb Dr. H. Nikolaus Schaller:

> 
> Am 09.07.2012 um 22:29 schrieb Ivan Vučica:
> 
>> 
>> On 9. 7. 2012., at 22:11, Dr. H. Nikolaus Schaller wrote:
>> 
>>> Am 09.07.2012 um 21:58 schrieb Ivan Vučica:
>>> 
>>>> Hi,
>>>> 
>>>> for Core Animation's implicit animations to work properly, I need to 
>>>> schedule creation and flushing of implicit CATransaction whenever event 
>>>> processing is entered, and whenever the runloop code is entered again. 
>>>> This can be either a C function or an Objective-C method, but I need these 
>>>> two pieces of code to run each and every time runloop calls user code and 
>>>> whenever user code is done running.
>>>> 
>>>> Note, I'm not trying to accomplish continuous calling of these methods 
>>>> (that's trivial using e.g. timers); instead, I need these methods to be 
>>>> called, for example, when user chooses a menu item or clicks on a button.
>>>> 
>>>> What's the easiest way to accomplish this?
>>> 
>>> Since this is similar to the displayIfNeeded-mechanism, I think you have to 
>>> add it to -[NSApplication run] or -[NSApplication runModalSession:]. Maybe 
>>> it could also be added to -[NSApplication updateWindows].
>>> 
>>> But if you need to have to do this in any tracking loop (usually in 
>>> mouseDown:), you should add it to -[NSApplication 
>>> nextEventMatchingMask:...].
>>> 
>>> Please don't think you can add it to NSRunLoop since this is Base and not 
>>> GUI...
>>> 
>>> If all this does not work, you could try the applicationWillUpdate / 
>>> applicationDidUpdate notifications.
>> 
>> Please note that Core Animation is not in GUI either :-)
> 
> Yes, but you can't guarantee that there is a runloop at all if you don't have 
> GUI... And I don't know if CA is useful if you don't have any GUI.
> 
>> Is there no API in NSRunLoop for scheduling additional functions to be run 
>> in the situations I described that would be available to applications?
> 
> Yes, there are some idle and other hooks. Maybe you can also achieve what you 
> intend by NSNotificationQueue.
> 
> But it is not clear to me what you really want to achieve. On one hand it 
> looks like you want to intercept user events. On the other hand I assume that 
> it is more related to keeping the display updated in time (flushing).
> 
> And you mention "every time runloop calls user code and whenever user code is 
> done running". Can you please better specify (examples) what "user code" 
> means for you? Are notifications "user code"? Are timers "user code"? Are 
> file handle/socket events "user code"? All these are handled by the runloop, 
> and GUI events are only a variant of them.

Another thought: if you want to integrate that into handling of all NSEvents, 
then add it to -[NSApplication sendEvent:] (but this also does only handle 
top-level events and not mouse tracking within e.g. NSCell).

So to me it is not at all clear on which level of abstraction you need to call 
these methods. Maybe, you can explain what they are intended to do. Then it may 
be easier to recommend a location where to call them.


reply via email to

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