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

Unified Diff: content/browser/compositor/io_surface_layer_mac.h

Issue 753933002: MacViews: Move content::AcceleratedWidget to new component, ui/accelerated_widget_mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@20141124-MacViews-MoveSoftwareLayerMac-fromcl
Patch Set: gn check Created 6 years, 1 month 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/compositor/io_surface_layer_mac.h
diff --git a/content/browser/compositor/io_surface_layer_mac.h b/content/browser/compositor/io_surface_layer_mac.h
deleted file mode 100644
index 5a218e8f66529e0b94e40ba596d5ea73d3defcfd..0000000000000000000000000000000000000000
--- a/content/browser/compositor/io_surface_layer_mac.h
+++ /dev/null
@@ -1,161 +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_COMPOSITOR_IO_SURFACE_LAYER_MAC_H_
-#define CONTENT_BROWSER_COMPOSITOR_IO_SURFACE_LAYER_MAC_H_
-
-#import <Cocoa/Cocoa.h>
-
-#include "base/mac/scoped_cftyperef.h"
-#include "base/memory/ref_counted.h"
-#include "base/timer/timer.h"
-#include "ui/gfx/size.h"
-
-@class IOSurfaceLayer;
-
-namespace content {
-class IOSurfaceTexture;
-class IOSurfaceContext;
-
-// The interface through which the IOSurfaceLayer calls back into
-// the structrue that created it (RenderWidgetHostViewMac or
-// BrowserCompositorViewMac).
-class IOSurfaceLayerClient {
- 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 IOSurfaceLayerShouldAckImmediately() 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 IOSurfaceLayerDidDrawFrame() = 0;
-
- // Called when an error prevents the frame from being drawn.
- virtual void IOSurfaceLayerHitError() = 0;
-};
-
-// IOSurfaceLayerHelper provides C++ functionality needed for the
-// IOSurfaceLayer class, and does most of the heavy lifting for the
-// class.
-// TODO(ccameron): This class should own IOSurfaceLayer, rather than
-// vice versa.
-class IOSurfaceLayerHelper {
- public:
- IOSurfaceLayerHelper(IOSurfaceLayerClient* client,
- IOSurfaceLayer* layer);
- ~IOSurfaceLayerHelper();
-
- // Called when the IOSurfaceLayer gets a new frame.
- void GotNewFrame();
-
- // Called whenever -[IOSurfaceLayer setNeedsDisplay] is called.
- void SetNeedsDisplay();
-
- // Called whenever -[IOSurfaceLayer canDrawInCGLContext] is called,
- // to determine if a new frame should be drawn.
- bool CanDraw();
-
- // Called whenever -[IOSurfaceLayer 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::IOSurfaceLayerClient* const client_;
-
- // The layer that owns this helper.
- IOSurfaceLayer* 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<IOSurfaceLayerHelper> timer_;
-};
-
-} // namespace content
-
-// The CoreAnimation layer for drawing accelerated content.
-@interface IOSurfaceLayer : CAOpenGLLayer {
- @private
- scoped_refptr<content::IOSurfaceTexture> iosurface_;
- scoped_refptr<content::IOSurfaceContext> context_;
-
- scoped_ptr<content::IOSurfaceLayerHelper> helper_;
-}
-
-- (id)initWithClient:(content::IOSurfaceLayerClient*)client
- withScaleFactor:(float)scale_factor;
-
-- (bool)gotFrameWithIOSurface:(IOSurfaceID)io_surface_id
- withPixelSize:(gfx::Size)pixel_size
- withScaleFactor:(float)scale_factor;
-
-// Context poison accessors.
-- (void)poisonContextAndSharegroup;
-- (bool)hasBeenPoisoned;
-
-- (float)scaleFactor;
-
-// The CGL renderer ID.
-- (int)rendererID;
-
-// 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_COMPOSITOR_IO_SURFACE_LAYER_MAC_H_
« no previous file with comments | « content/browser/compositor/io_surface_context_mac.mm ('k') | content/browser/compositor/io_surface_layer_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698