@@ -104,7 +104,6 @@ @interface PPSSPPViewControllerGL () {
104104@property (nonatomic , strong ) EAGLContext *glContext;
105105@property (nonatomic , strong ) GLKView *glView;
106106@property (nonatomic , strong ) CADisplayLink *displayLink;
107- @property (nonatomic , assign ) NSTimeInterval lastTimestamp;
108107
109108@property (nonatomic , strong ) EAGLContext* context;
110109
@@ -214,8 +213,6 @@ - (void)viewDidLoad {
214213 }
215214 [self .displayLink addToRunLoop: [NSRunLoop mainRunLoop ] forMode: NSDefaultRunLoopMode ];
216215
217- self.lastTimestamp = 0 ;
218-
219216 [[DisplayManager shared ] setupDisplayListener ];
220217
221218 UIScreen* screen = [(AppDelegate*)[UIApplication sharedApplication ].delegate screen ];
@@ -275,29 +272,23 @@ - (void)dealloc {
275272- (void )setPreferredFramesPerSecond : (NSInteger )preferredFramesPerSecond {
276273 _preferredFramesPerSecond = preferredFramesPerSecond;
277274 if (self.displayLink ) {
278- if (@available (iOS 10.0 , *)) {
279- self.displayLink .preferredFramesPerSecond = (NSInteger )preferredFramesPerSecond;
280- } else {
281- self.displayLink .frameInterval = MAX (1 , (NSInteger )round (60.0 / preferredFramesPerSecond));
282- }
275+ self.displayLink .preferredFramesPerSecond = (NSInteger )preferredFramesPerSecond;
283276 }
284277}
285278
286279- (void )displayLinkFired : (CADisplayLink *)dl {
287- // compute delta time
280+ static uint64_t presentId = 0 ;
281+ presentId++;
282+
288283 NSTimeInterval timestamp = dl.timestamp ;
289- NSTimeInterval delta = 0 ;
290- if (self.lastTimestamp > 0 ) {
291- delta = timestamp - self.lastTimestamp ;
292- } else {
293- delta = dl.duration ; // fallback
294- }
295- self.lastTimestamp = timestamp;
284+ NSTimeInterval targetTimestamp = dl.targetTimestamp ;
296285
297286 // Ensure context is current before drawing
298287 [EAGLContext setCurrentContext: self .glContext];
299288
300- // Trigger GLKView draw
289+ NativeVSync (presentId, from_mach_time_interval (timestamp), from_mach_time_interval (targetTimestamp));
290+
291+ // Trigger GLKView draw, which in turn calls glkView:drawInRect.
301292 [self .glView display ];
302293}
303294
0 commit comments