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

Side by Side Diff: ui/compositor/mac/accelerated_widget_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: rebase to master Created 6 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_BROWSER_COMPOSITOR_ACCELERATED_WIDGET_HELPER_MAC_H_ 5 #ifndef UI_COMPOSITOR_MAC_ACCELERATED_WIDGET_HELPER_MAC_H_
6 #define CONTENT_BROWSER_COMPOSITOR_ACCELERATED_WIDGET_HELPER_MAC_H_ 6 #define UI_COMPOSITOR_MAC_ACCELERATED_WIDGET_HELPER_MAC_H_
7 7
8 #include <IOSurface/IOSurfaceAPI.h> 8 #include <IOSurface/IOSurfaceAPI.h>
9 #include <vector> 9 #include <vector>
10 10
11 #include "skia/ext/platform_canvas.h" 11 #include "ui/compositor/compositor_export.h"
12 #include "ui/events/latency_info.h" 12 #include "ui/events/latency_info.h"
13 #include "ui/gfx/geometry/size.h" 13 #include "ui/gfx/geometry/size.h"
14 #include "ui/gfx/native_widget_types.h" 14 #include "ui/gfx/native_widget_types.h"
15 15
16 #if defined(__OBJC__) 16 #if defined(__OBJC__)
17 #include <Cocoa/Cocoa.h> 17 #import <Cocoa/Cocoa.h>
18 #include "base/mac/scoped_nsobject.h" 18 #import "base/mac/scoped_nsobject.h"
19 #include "content/browser/compositor/io_surface_layer_mac.h"
20 #include "content/browser/compositor/software_layer_mac.h"
21 #include "ui/base/cocoa/remote_layer_api.h" 19 #include "ui/base/cocoa/remote_layer_api.h"
20 #import "ui/compositor/mac/io_surface_layer_mac.h"
21 #import "ui/compositor/mac/software_layer.h"
22 #endif // __OBJC__ 22 #endif // __OBJC__
23 23
24 class SkCanvas;
25
24 namespace cc { 26 namespace cc {
25 class SoftwareFrameData; 27 class SoftwareFrameData;
26 } 28 }
27 29
28 namespace content { 30 namespace ui {
29 31
30 class AcceleratedWidgetMac; 32 class AcceleratedWidgetMac;
31 33
32 // A class through which an AcceleratedWidget may be bound to draw the contents 34 // A class through which an AcceleratedWidget may be bound to draw the contents
33 // of an NSView. An AcceleratedWidget may be bound to multiple different views 35 // of an NSView. An AcceleratedWidget may be bound to multiple different views
34 // throughout its lifetime (one at a time, though). 36 // throughout its lifetime (one at a time, though).
35 class AcceleratedWidgetMacNSView { 37 class AcceleratedWidgetMacNSView {
36 public: 38 public:
37 virtual NSView* AcceleratedWidgetGetNSView() const = 0; 39 virtual NSView* AcceleratedWidgetGetNSView() const = 0;
38 virtual bool AcceleratedWidgetShouldIgnoreBackpressure() const = 0; 40 virtual bool AcceleratedWidgetShouldIgnoreBackpressure() const = 0;
39 virtual void AcceleratedWidgetSwapCompleted( 41 virtual void AcceleratedWidgetSwapCompleted(
40 const std::vector<ui::LatencyInfo>& latency_info) = 0; 42 const std::vector<ui::LatencyInfo>& latency_info) = 0;
41 virtual void AcceleratedWidgetHitError() = 0; 43 virtual void AcceleratedWidgetHitError() = 0;
42 }; 44 };
43 45
44 #if defined(__OBJC__) 46 #if defined(__OBJC__)
45 47
46 // AcceleratedWidgetMac owns a tree of CALayers. The widget may be passed 48 // AcceleratedWidgetMac owns a tree of CALayers. The widget may be passed
47 // to a ui::Compositor, which will cause, through its output surface, calls to 49 // to a ui::Compositor, which will cause, through its output surface, calls to
48 // GotAcceleratedFrame and GotSoftwareFrame. The CALayers may be installed 50 // GotAcceleratedFrame and GotSoftwareFrame. The CALayers may be installed
49 // in an NSView by setting the AcceleratedWidgetMacNSView for the helper. 51 // in an NSView by setting the AcceleratedWidgetMacNSView for the helper.
50 class AcceleratedWidgetMac : public IOSurfaceLayerClient { 52 class COMPOSITOR_EXPORT AcceleratedWidgetMac : public IOSurfaceLayerClient {
51 public: 53 public:
52 AcceleratedWidgetMac(); 54 explicit AcceleratedWidgetMac(bool needs_gl_finish_workaround);
53 virtual ~AcceleratedWidgetMac(); 55 virtual ~AcceleratedWidgetMac();
54 56
55 gfx::AcceleratedWidget accelerated_widget() { return native_widget_; } 57 gfx::AcceleratedWidget accelerated_widget() { return native_widget_; }
56 58
57 void SetNSView(AcceleratedWidgetMacNSView* view); 59 void SetNSView(AcceleratedWidgetMacNSView* view);
58 void ResetNSView(); 60 void ResetNSView();
59 61
60 // Return true if the last frame swapped has a size in DIP of |dip_size|. 62 // Return true if the last frame swapped has a size in DIP of |dip_size|.
61 bool HasFrameOfSize(const gfx::Size& dip_size) const; 63 bool HasFrameOfSize(const gfx::Size& dip_size) const;
62 64
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 133
132 // If an accelerated frame has come in which has not yet been drawn and acked 134 // If an accelerated frame has come in which has not yet been drawn and acked
133 // then this is the latency info and the callback to make when the frame is 135 // then this is the latency info and the callback to make when the frame is
134 // drawn. If there is no such frame then the callback is null. 136 // drawn. If there is no such frame then the callback is null.
135 std::vector<ui::LatencyInfo> accelerated_latency_info_; 137 std::vector<ui::LatencyInfo> accelerated_latency_info_;
136 base::Closure accelerated_frame_drawn_callback_; 138 base::Closure accelerated_frame_drawn_callback_;
137 139
138 // The size in DIP of the last swap received from |compositor_|. 140 // The size in DIP of the last swap received from |compositor_|.
139 gfx::Size last_swap_size_dip_; 141 gfx::Size last_swap_size_dip_;
140 142
143 // Whether surfaces created by the widget should use the glFinish() workaround
144 // after compositing.
145 bool needs_gl_finish_workaround_;
146
141 DISALLOW_COPY_AND_ASSIGN(AcceleratedWidgetMac); 147 DISALLOW_COPY_AND_ASSIGN(AcceleratedWidgetMac);
142 }; 148 };
143 149
144 #endif // __OBJC__ 150 #endif // __OBJC__
145 151
152 COMPOSITOR_EXPORT
146 void AcceleratedWidgetMacGotAcceleratedFrame( 153 void AcceleratedWidgetMacGotAcceleratedFrame(
147 gfx::AcceleratedWidget widget, uint64 surface_handle, 154 gfx::AcceleratedWidget widget, uint64 surface_handle,
148 const std::vector<ui::LatencyInfo>& latency_info, 155 const std::vector<ui::LatencyInfo>& latency_info,
149 gfx::Size pixel_size, float scale_factor, 156 gfx::Size pixel_size, float scale_factor,
150 const base::Closure& drawn_callback, 157 const base::Closure& drawn_callback,
151 bool* disable_throttling, int* renderer_id); 158 bool* disable_throttling, int* renderer_id);
152 159
160 COMPOSITOR_EXPORT
153 void AcceleratedWidgetMacGotSoftwareFrame( 161 void AcceleratedWidgetMacGotSoftwareFrame(
154 gfx::AcceleratedWidget widget, 162 gfx::AcceleratedWidget widget,
155 cc::SoftwareFrameData* frame_data, float scale_factor, SkCanvas* canvas); 163 cc::SoftwareFrameData* frame_data, float scale_factor, SkCanvas* canvas);
156 164
157 } // namespace content 165 } // namespace ui
158 166
159 #endif // CONTENT_BROWSER_COMPOSITOR_ACCELERATED_WIDGET_HELPER_MAC_H_ 167 #endif // UI_COMPOSITOR_MAC_ACCELERATED_WIDGET_HELPER_MAC_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698