Skip navigation.
 
mlRe: Drawing from secondary thread erases resize corner in window?
FROM : Ron Fleckner
DATE : Thu Feb 28 23:16:19 2008

On 29/02/2008, at 8:31 AM, Nate Weaver wrote:

> On Feb 28, 2008, at 3:18 PM, Hank Heijink wrote:
>

>>
>> On Feb 28, 2008, at 2:56 PM, Nate Weaver wrote:
>>

>>>> Interesting... I hadn't thought of that. Don't I have to add 
>>>> another timer to the NSDefaultRunLoopMode though? If I have to 
>>>> chose between having two timers on the main thread that 
>>>> alternate, or one on a secondary thread, I think I'll go with 
>>>> the extra thread.

>>>
>>> I don't believe so; I've used it in an app of my own with a 
>>> single timer to avoid the same issue you're having, with no 
>>> apparent ill effects.

>>
>>
>> That's not my experience. If I just add a timer for the 
>> NSEventTrackingRunLoopMode, the only time that timer fires is when 
>> the run loop is in event tracking mode, which is what I would 
>> expect. In the NSDefaultRunLoopMode, that timer doesn't fire at 
>> all. Are you doing something somewhere else to make this happen, 
>> or am I missing something?

>
>
> How did you create the timer? Via 
> +scheduledTimerWithTimeInterval:... or +timerWithTimeInterval:... ? 
> If you use the latter, you'll have to add it to 
> NSDefaultRunLoopMode yourself. I just do something like:
>
> myTimer = [[NSTimer scheduledTimerWithTimeInterval:1.0 target:self 
> selector:@selector(doTimerStuff:) userInfo:nil repeats:YES] retain];
> [[NSRunLoop mainRunLoop] myTimer forMode:NSEventTrackingRunLoopMode];
>
> and it works during both modes (the retain there probably isn't 
> necessary in the general case, either).


Hank, I can confirm this is true using 
+scheduledTimerWithTimeInterval: and then adding the timer to the 
NSEventTrackingRunLoopMode.  No problems running the timer whether 
events occur or not.

Ron