• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Smooth fast scrolling programatically
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Smooth fast scrolling programatically


  • Subject: Re: Smooth fast scrolling programatically
  • From: Joseph Jones <email@hidden>
  • Date: Tue, 27 May 2003 15:26:47 -0700

There is a hack on any BSD Socket implementation that will allow you to get microsecond resolution timers. You can use select, passing 0/null for the first four parameters and a timeval pointer as the fourth. You use the timeval to set your timer resolution. You can find an example in the Steven's "Unix Network Programming" book. Since you won't have an NSTimer to work with, you'll have to cut your own NSThread that loops over a function that does nothing more than run loops over this select statement and then calls back into your code in a thread safe manner.

Here is some sample code (Typed in on the fly, so do not trust it right off):
...
#import <sys\types.h>
#import <sys\time.h>
...

- (void) highResolutionTimer: (id) arg
{
struct timeval timeout;

memset (&timeout, 0, sizeof(timeout) );
timeout.tv_usec = 1000; //Set 1000 micro second timer

while ( true ) //You'd want to wait on some thread exit parameter here, such as something to do with arg
{
select ( 0, (fd_set*)null, (fd_set*)null, (fd_set*)null, &timeout); //This will block till timeout expires in 1000 micro secondds
//Do your thread safe call back here!
}
}

...

- (void) myCreateThreadFunc
{
//The best bet would be to pass something in for the argument object and use that to trigger termination
//of the loop.
[NSThread detachNewThreadSelector:@selector(highResolutionTimer:) toTarget:self withObject:null];
}


Thanx,
joe

On Monday, May 26, 2003, at 10:46 PM, Andrew Garber wrote:

From Apple's Cocoa Documentation on timers:

"Because of the various input sources a typical run loop manages, the
effective resolution of the time interval for an NSTimer is limited to
on the order of 50-100 milliseconds."

http://developer.apple.com/techpubs/macosx/Cocoa/TasksAndConcepts/
ProgrammingTopics/Timers/index.html#//apple_ref/doc/uid/10000061i


Andrew


On Monday, May 26, 2003, at 06:02 AM, Rolf wrote:

Thanks. I have checked - its not being redrawn completely. I think
the problem is NSTimer which is not accurate enough for this use with
the interval being so small. Maybe I'll have to resort to a busy-wait
loop inside a seperate thread ?

/Rolf

26.05.2003 12:32:23, skrev John Hvrnkvist
<email@hidden>:


On Monday, May 26, 2003, at 12:17 Europe/Stockholm, Rolf wrote:

My app has a panel with a (wide) NSIMageView inside a (narrow)
NSScrollView. The NSImageView is supposed to scroll smoothly and
quickly inside the NSScrollView from one end to the other
(horizontally). The range is around 300 pixels. The problem is that
the scrolling is not as smooth
as I'd like - its actually quite jerky (on a G4 667 MHz). The app is
performing no other tasks while the scrolling is going on. What can
be
done to create a perfectly smooth (& quick) scrolling ?

Have you used QuartzDebug to check that the scroll view isn't being
redrawn completely for each scroll "step"?

/John
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

  • Follow-Ups:
    • Re: Smooth fast scrolling programatically
      • From: Rolf <email@hidden>
References: 
 >Re: Smooth fast scrolling programatically (From: Andrew Garber <email@hidden>)

  • Prev by Date: Error 1000 and no menus or icon???
  • Next by Date: Ask Before Quite,Best Way To Save INFO
  • Previous by thread: Re: Smooth fast scrolling programatically
  • Next by thread: Re: Smooth fast scrolling programatically
  • Index(es):
    • Date
    • Thread