| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2009, Google Inc. | 2 * Copyright 2009, Google Inc. |
| 3 * All rights reserved. | 3 * All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 continue; | 244 continue; |
| 245 } | 245 } |
| 246 | 246 |
| 247 bool in_fullscreen = obj->GetFullscreenMacWindow(); | 247 bool in_fullscreen = obj->GetFullscreenMacWindow(); |
| 248 | 248 |
| 249 if (obj->drawing_model_ == NPDrawingModelCoreAnimation && | 249 if (obj->drawing_model_ == NPDrawingModelCoreAnimation && |
| 250 !in_fullscreen) { | 250 !in_fullscreen) { |
| 251 O3DLayer* o3dLayer = static_cast<O3DLayer*>(obj->gl_layer_); | 251 O3DLayer* o3dLayer = static_cast<O3DLayer*>(obj->gl_layer_); |
| 252 if (o3dLayer) { | 252 if (o3dLayer) { |
| 253 obj->client()->Tick(); | 253 obj->client()->Tick(); |
| 254 [o3dLayer setNeedsDisplay]; | 254 |
| 255 if (obj->client()->NeedsRender()) { |
| 256 [o3dLayer setNeedsDisplay]; |
| 257 } |
| 255 } | 258 } |
| 256 continue; | 259 continue; |
| 257 } | 260 } |
| 258 | 261 |
| 259 ManageSafariTabSwitching(obj); | 262 ManageSafariTabSwitching(obj); |
| 260 obj->client()->Tick(); | 263 obj->client()->Tick(); |
| 261 | 264 |
| 262 // It's possible that event processing may have torn down the | 265 // It's possible that event processing may have torn down the |
| 263 // full-screen window in the call above. | 266 // full-screen window in the call above. |
| 264 in_fullscreen = obj->GetFullscreenMacWindow(); | 267 in_fullscreen = obj->GetFullscreenMacWindow(); |
| 265 | 268 |
| 266 if (in_fullscreen) { | 269 if (in_fullscreen) { |
| 267 obj->GetFullscreenMacWindow()->IdleCallback(); | 270 obj->GetFullscreenMacWindow()->IdleCallback(); |
| 268 } | 271 } |
| 269 | 272 |
| 270 // We're visible if (a) we are in fullscreen mode, (b) our cliprect | 273 // We're visible if (a) we are in fullscreen mode, (b) our cliprect |
| 271 // height and width are both a sensible size, ie > 1 pixel, or (c) if | 274 // height and width are both a sensible size, ie > 1 pixel, or (c) if |
| 272 // we are rendering to render surfaces (CoreGraphics drawing model, | 275 // we are rendering to render surfaces (CoreGraphics drawing model, |
| 273 // essentially offscreen rendering). | 276 // essentially offscreen rendering). |
| 274 // | 277 // |
| 275 // We don't check for 0 as we have to size to 1 x 1 on occasion rather than | 278 // We don't check for 0 as we have to size to 1 x 1 on occasion rather than |
| 276 // 0 x 0 to avoid crashing the Apple software renderer, but do not want to | 279 // 0 x 0 to avoid crashing the Apple software renderer, but do not want to |
| 277 // actually draw to a 1 x 1 pixel area. | 280 // actually draw to a 1 x 1 pixel area. |
| 278 bool plugin_visible = in_fullscreen || | 281 bool plugin_visible = in_fullscreen || |
| 279 (obj->last_buffer_rect_[2] > 1 && obj->last_buffer_rect_[3] > 1) || | 282 (obj->last_buffer_rect_[2] > 1 && obj->last_buffer_rect_[3] > 1) || |
| 280 obj->IsOffscreenRenderingEnabled(); | 283 obj->IsOffscreenRenderingEnabled(); |
| 281 | 284 |
| 282 if (plugin_visible && obj->renderer()) { | 285 if (plugin_visible && obj->renderer()) { |
| 283 if (obj->client()->NeedsContinuousRender() || | 286 if (obj->client()->NeedsRender()) { |
| 284 obj->renderer()->need_to_render()) { | |
| 285 // Force a sync to the VBL (once per timer callback) | 287 // Force a sync to the VBL (once per timer callback) |
| 286 // to avoid tearing | 288 // to avoid tearing |
| 287 GLint sync = (i == 0); | 289 GLint sync = (i == 0); |
| 288 if (obj->mac_cgl_context_) { | 290 if (obj->mac_cgl_context_) { |
| 289 CGLSetParameter(obj->mac_cgl_context_, kCGLCPSwapInterval, &sync); | 291 CGLSetParameter(obj->mac_cgl_context_, kCGLCPSwapInterval, &sync); |
| 290 } else if (obj->mac_agl_context_) { | 292 } else if (obj->mac_agl_context_) { |
| 291 aglSetInteger(obj->mac_agl_context_, AGL_SWAP_INTERVAL, &sync); | 293 aglSetInteger(obj->mac_agl_context_, AGL_SWAP_INTERVAL, &sync); |
| 292 } | 294 } |
| 293 | 295 |
| 294 if (obj->IsOffscreenRenderingEnabled()) { | 296 if (obj->IsOffscreenRenderingEnabled()) { |
| (...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 690 #ifdef RENDERER_GLES2 | 692 #ifdef RENDERER_GLES2 |
| 691 ((o3d::RendererGLES2*) renderer_)->set_mac_cgl_context(context); | 693 ((o3d::RendererGLES2*) renderer_)->set_mac_cgl_context(context); |
| 692 #else | 694 #else |
| 693 ((o3d::RendererGL*) renderer_)->set_mac_cgl_context(context); | 695 ((o3d::RendererGL*) renderer_)->set_mac_cgl_context(context); |
| 694 #endif | 696 #endif |
| 695 } | 697 } |
| 696 } | 698 } |
| 697 | 699 |
| 698 } // namespace glue | 700 } // namespace glue |
| 699 } // namespace o3d | 701 } // namespace o3d |
| OLD | NEW |