OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #import "SkNSView.h" | 8 #import "SkNSView.h" |
9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" |
10 #include "SkSurface.h" | 10 #include "SkSurface.h" |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 loc.y = -loc.y; | 322 loc.y = -loc.y; |
323 #endif | 323 #endif |
324 fWind->handleClick((int) loc.x, (int) loc.y, | 324 fWind->handleClick((int) loc.x, (int) loc.y, |
325 SkView::Click::kUp_State, self, modi); | 325 SkView::Click::kUp_State, self, modi); |
326 } | 326 } |
327 } | 327 } |
328 | 328 |
329 /////////////////////////////////////////////////////////////////////////////// | 329 /////////////////////////////////////////////////////////////////////////////// |
330 #include <OpenGL/OpenGL.h> | 330 #include <OpenGL/OpenGL.h> |
331 | 331 |
332 namespace { | 332 static CGLContextObj createGLContext(int msaaSampleCount) { |
333 CGLContextObj createGLContext(int msaaSampleCount) { | |
334 GLint major, minor; | 333 GLint major, minor; |
335 CGLGetVersion(&major, &minor); | 334 CGLGetVersion(&major, &minor); |
336 | 335 |
337 static const CGLPixelFormatAttribute attributes[] = { | 336 static const CGLPixelFormatAttribute attributes[] = { |
338 kCGLPFAStencilSize, (CGLPixelFormatAttribute) 8, | 337 kCGLPFAStencilSize, (CGLPixelFormatAttribute) 8, |
339 kCGLPFAAccelerated, | 338 kCGLPFAAccelerated, |
340 kCGLPFADoubleBuffer, | 339 kCGLPFADoubleBuffer, |
341 (CGLPixelFormatAttribute)0 | 340 (CGLPixelFormatAttribute)0 |
342 }; | 341 }; |
343 | 342 |
(...skipping 18 matching lines...) Expand all Loading... |
362 } | 361 } |
363 CGLContextObj ctx; | 362 CGLContextObj ctx; |
364 CGLCreateContext(format, NULL, &ctx); | 363 CGLCreateContext(format, NULL, &ctx); |
365 CGLDestroyPixelFormat(format); | 364 CGLDestroyPixelFormat(format); |
366 | 365 |
367 static const GLint interval = 1; | 366 static const GLint interval = 1; |
368 CGLSetParameter(ctx, kCGLCPSwapInterval, &interval); | 367 CGLSetParameter(ctx, kCGLCPSwapInterval, &interval); |
369 CGLSetCurrentContext(ctx); | 368 CGLSetCurrentContext(ctx); |
370 return ctx; | 369 return ctx; |
371 } | 370 } |
372 } | |
373 | 371 |
374 - (void)viewDidMoveToWindow { | 372 - (void)viewDidMoveToWindow { |
375 [super viewDidMoveToWindow]; | 373 [super viewDidMoveToWindow]; |
376 | 374 |
377 //Attaching view to fGLContext requires that the view to be part of a window
, | 375 //Attaching view to fGLContext requires that the view to be part of a window
, |
378 //and that the NSWindow instance must have a CoreGraphics counterpart (or | 376 //and that the NSWindow instance must have a CoreGraphics counterpart (or |
379 //it must NOT be deferred or should have been on screen at least once) | 377 //it must NOT be deferred or should have been on screen at least once) |
380 if ([fGLContext view] != self && nil != self.window) { | 378 if ([fGLContext view] != self && nil != self.window) { |
381 [fGLContext setView:self]; | 379 [fGLContext setView:self]; |
382 } | 380 } |
(...skipping 30 matching lines...) Expand all Loading... |
413 - (void)detach { | 411 - (void)detach { |
414 [fGLContext release]; | 412 [fGLContext release]; |
415 fGLContext = nil; | 413 fGLContext = nil; |
416 } | 414 } |
417 | 415 |
418 - (void)present { | 416 - (void)present { |
419 if (nil != fGLContext) { | 417 if (nil != fGLContext) { |
420 [fGLContext flushBuffer]; | 418 [fGLContext flushBuffer]; |
421 } | 419 } |
422 } | 420 } |
| 421 |
| 422 - (void)setVSync:(bool)enable { |
| 423 if (fGLContext) { |
| 424 GLint interval = enable ? 1 : 0; |
| 425 CGLContextObj ctx = (CGLContextObj)[fGLContext CGLContextObj]; |
| 426 CGLSetParameter(ctx, kCGLCPSwapInterval, &interval); |
| 427 } |
| 428 } |
423 @end | 429 @end |
OLD | NEW |