On Jul 26, 2013, at 10:36 PM, Scott Ribe <[email protected]> wrote:

> 
> On Jul 26, 2013, at 7:06 AM, Ken Thomases <[email protected]> wrote:
> 
>> On Jul 25, 2013, at 11:37 PM, [email protected] wrote:
>> 
>>> On Jul 26, 2013, at 12:09 PM, Ken Thomases <[email protected]> wrote:
>>> 
>>>> Also, the above code doesn't adjust the timer to fire on the second as 
>>>> Rick suggested.  You're asking it to fire every so many seconds 
>>>> (delayInSeconds) but you aren't specifying when during the second to fire. 
>>>>  Rather than passing 0 as the second parameter of dispatch_walltime(), you 
>>>> should compute an adjustment to try to get close to a whole second.  Since 
>>>> dispatch_walltime() uses gettimeofday() when you pass NULL for the first 
>>>> parameter, I'd use that same call to fill in a timeval structure and then 
>>>> pass NSEC_PER_SEC - (tp.tv_usec * NSEC_PER_USEC) as the second parameter.
>>>> 
>>>> Regards,
>>>> Ken
>>>> 
>>> Thanks Ken, no I hadn't yet bothered to do this, as dispatch_walltime() was 
>>> initially close enough to work on the other bits of the app.
>>> It would make a difference to reduce some lag.
>>> What is the part in the second parameter your are doing there…
>>>> NSEC_PER_SEC - (tp.tv_usec * NSEC_PER_USEC)
>>> Looks like something to adust it but what is tp.tv_usec ?
>> 
>> I hypothesized a struct timeval variable named "tp" that you passed to 
>> gettimeofday().  Then you would use the sub-second part (the tv_usec field) 
>> to figure out roughly how far off of a whole second dispatch_walltime() 
>> would be when passed NULL for the first parameter, since it will also use 
>> gettimeofday().
> 
> 
> FYI, in the past, for a quick & dirty solution, I've just set a timer to fire 
> every 0.1 seconds. Then in the handler you check if the second changed since 
> the last time, and do nothing if it hasn't. This gets you updating that 
> appears smooth to the user, unless the main thread spends too much time doing 
> something and updates don't happen--and that's a problem that's outside the 
> timers & clocks whose solution is not related to the timers and clocks, whose 
> solution is of course "don't do that".
> 
> -- 
> Scott Ribe
> [email protected]
> http://www.elevated-dev.com/
> (303) 722-0567 voice
> 
Hmm, it's a brute force approach, but certainly easier than understanding 
mach_time :D
I'm using Core Animation for most of the UI changes, so the main thread won't 
be super busy.

I may not even need the 1 second as the seconds won't add a whole lot of info 
when looking at time in different time zones comparatively, but I want to have 
this in my tool belt.
For the current tool, I could get by fine with a simple hour and minute hand 
analog clock face.


_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to