Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(844)

Unified Diff: content/browser/renderer_host/compositing_iosurface_layer_mac.h

Issue 490393002: Simplify IOSurface CoreAnimation code: Part 2 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Lower similarity Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/compositing_iosurface_layer_mac.h
diff --git a/content/browser/renderer_host/compositing_iosurface_layer_mac.h b/content/browser/renderer_host/compositing_iosurface_layer_mac.h
deleted file mode 100644
index a01b6fc125ce6fa609b61c09ce6a7a8337a5e0bc..0000000000000000000000000000000000000000
--- a/content/browser/renderer_host/compositing_iosurface_layer_mac.h
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_BROWSER_RENDERER_HOST_COMPOSITING_IOSURFACE_LAYER_MAC_H_
-#define CONTENT_BROWSER_RENDERER_HOST_COMPOSITING_IOSURFACE_LAYER_MAC_H_
-
-#import <Cocoa/Cocoa.h>
-
-#include "base/mac/scoped_cftyperef.h"
-#include "base/memory/ref_counted.h"
-#include "base/timer/timer.h"
-
-@class CompositingIOSurfaceLayer;
-
-namespace content {
-class CompositingIOSurfaceMac;
-class CompositingIOSurfaceContext;
-
-// The interface through which the CompositingIOSurfaceLayer calls back into
-// the structrue that created it (RenderWidgetHostViewMac or
-// BrowserCompositorViewMac).
-class CompositingIOSurfaceLayerClient {
- public:
- // Used to indicate that the layer should attempt to draw immediately and
- // should (even if the draw is elided by the system), ack the frame
- // immediately.
- virtual bool AcceleratedLayerShouldAckImmediately() const = 0;
-
- // Called when a frame is drawn or when, because the layer is not visible, it
- // is known that the frame will never drawn.
- virtual void AcceleratedLayerDidDrawFrame() = 0;
-
- // Called when an error prevents the frame from being drawn.
- virtual void AcceleratedLayerHitError() = 0;
-};
-
-// CompositingIOSurfaceLayerHelper provides C++ functionality needed for the
-// CompositingIOSurfaceLayer class, and does most of the heavy lifting for the
-// class.
-// TODO(ccameron): This class should own CompositingIOSurfaceLayer, rather than
-// vice versa.
-class CompositingIOSurfaceLayerHelper {
- public:
- CompositingIOSurfaceLayerHelper(CompositingIOSurfaceLayerClient* client,
- CompositingIOSurfaceLayer* layer);
- ~CompositingIOSurfaceLayerHelper();
-
- // Called when the CompositingIOSurfaceLayer gets a new frame.
- void GotNewFrame();
-
- // Called whenever -[CompositingIOSurfaceLayer setNeedsDisplay] is called.
- void SetNeedsDisplay();
-
- // Called whenever -[CompositingIOSurfaceLayer canDrawInCGLContext] is called,
- // to determine if a new frame should be drawn.
- bool CanDraw();
-
- // Called whenever -[CompositingIOSurfaceLayer drawInCGLContext] draws a
- // frame.
- void DidDraw(bool success);
-
- // Immediately re-draw the layer, even if the content has not changed, and
- // ensure that the frame be acked.
- void SetNeedsDisplayAndDisplayAndAck();
-
- // Immediately draw the layer, only if one is pending, and ensure that the
- // frame be acked.
- void DisplayIfNeededAndAck();
-
- // Mark a bracket in which new frames are being pumped in a restricted nested
- // run loop. During this time frames are acked immediately and draws are
- // deferred until the bracket ends.
- void BeginPumpingFrames();
- void EndPumpingFrames();
-
- private:
- // Called whenever the frame provided in GotNewFrame should be acknowledged
- // (this may be because it was drawn, or it may be to unblock the
- // compositor).
- void AckPendingFrame(bool success);
-
- void TimerFired();
-
- // The client that the owning layer was created with.
- content::CompositingIOSurfaceLayerClient* const client_;
-
- // The layer that owns this helper.
- CompositingIOSurfaceLayer* const layer_;
-
- // Used to track when canDrawInCGLContext should return YES. This can be
- // in response to receiving a new compositor frame, or from any of the events
- // that cause setNeedsDisplay to be called on the layer.
- bool needs_display_;
-
- // This is set when a frame is received, and un-set when the frame is drawn.
- bool has_pending_frame_;
-
- // Incremented every time that this layer is asked to draw but does not have
- // new content to draw.
- uint64 did_not_draw_counter_;
-
- // Set when inside a BeginPumpingFrames/EndPumpingFrames block.
- bool is_pumping_frames_;
-
- // The browser places back-pressure on the GPU by not acknowledging swap
- // calls until they appear on the screen. This can lead to hangs if the
- // view is moved offscreen (among other things). Prevent hangs by always
- // acknowledging the frame after timeout of 1/6th of a second has passed.
- base::DelayTimer<CompositingIOSurfaceLayerHelper> timer_;
-};
-
-} // namespace content
-
-// The CoreAnimation layer for drawing accelerated content.
-@interface CompositingIOSurfaceLayer : CAOpenGLLayer {
- @private
- scoped_refptr<content::CompositingIOSurfaceMac> iosurface_;
- scoped_refptr<content::CompositingIOSurfaceContext> context_;
-
- scoped_ptr<content::CompositingIOSurfaceLayerHelper> helper_;
-}
-
-- (content::CompositingIOSurfaceMac*)iosurface;
-- (content::CompositingIOSurfaceContext*)context;
-
-- (id)initWithIOSurface:(scoped_refptr<content::CompositingIOSurfaceMac>)
- iosurface
- withScaleFactor:(float)scale_factor
- withClient:(content::CompositingIOSurfaceLayerClient*)client;
-
-// Mark that the client is no longer valid and cannot be called back into. This
-// must be called before the layer is destroyed.
-- (void)resetClient;
-
-// Called when a new frame is received.
-- (void)gotNewFrame;
-
-// Force a draw immediately (even if this means re-displaying a previously
-// displayed frame).
-- (void)setNeedsDisplayAndDisplayAndAck;
-
-// Force a draw immediately, but only if one was requested.
-- (void)displayIfNeededAndAck;
-
-// Mark a bracket in which new frames are being pumped in a restricted nested
-// run loop.
-- (void)beginPumpingFrames;
-- (void)endPumpingFrames;
-@end
-
-#endif // CONTENT_BROWSER_RENDERER_HOST_COMPOSITING_IOSURFACE_LAYER_MAC_H_

Powered by Google App Engine
This is Rietveld 408576698