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

Unified Diff: ui/base/cocoa/remote_layer_api.h

Issue 347653005: Make cross-process CALayers work on Mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@image_transport_1
Patch Set: Incorporate review feedback Created 6 years, 6 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
« no previous file with comments | « content/content_common.gypi ('k') | ui/base/cocoa/remote_layer_api.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/cocoa/remote_layer_api.h
diff --git a/ui/base/cocoa/remote_layer_api.h b/ui/base/cocoa/remote_layer_api.h
new file mode 100644
index 0000000000000000000000000000000000000000..8d704af3d2f0a50d2fe570891041c700dd26e115
--- /dev/null
+++ b/ui/base/cocoa/remote_layer_api.h
@@ -0,0 +1,59 @@
+// Copyright 2014 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 UI_BASE_COCOA_REMOTE_LAYER_API_H_
+#define UI_BASE_COCOA_REMOTE_LAYER_API_H_
+
+#if defined(__OBJC__)
+#import <Cocoa/Cocoa.h>
+#endif // __OBJC__
+
+#include "ui/base/ui_base_export.h"
+
+// The CGSConnectionID is used to create the CAContext in the process that is
+// going to share the CALayers that it is rendering to another process to
+// display.
+extern "C" {
+typedef uint32_t CGSConnectionID;
+CGSConnectionID CGSMainConnectionID(void);
Ken Russell (switch to Gerrit) 2014/06/20 18:37:40 Does it really work on systems which don't support
Avi (use Gerrit) 2014/06/20 18:42:18 CGSMainConnectionID() has been around forever. You
ccameron 2014/06/20 18:44:15 Cause it's not documented, I'm not sure when it wa
+};
+
+// The CAContextID type identifies a CAContext across processes. This is the
+// token that is passed from the process that is sharing the CALayer that it is
+// rendering to the process that will be displaying that CALayer.
+typedef uint32_t CAContextID;
+
+#if defined(__OBJC__)
+
+// The CAContext has a static CAContextID which can be sent to another process.
+// When a CALayerHost is created using that CAContextID in another process, the
+// content displayed by that CALayerHost will be the content of the CALayer
+// that is set as the |layer| property on the CAContext.
+@interface CAContext : NSObject
++ (id)contextWithCGSConnection:(CAContextID)contextId
+ options:(NSDictionary*)optionsDict;
+@property(readonly) CAContextID contextId;
+@property(retain) CALayer *layer;
+@end
+
+// The CALayerHost is created in the process that will display the content
+// being rendered by another process. Setting the |contextId| property on
+// an object of this class will make this layer display the content of the
+// CALayer that is set to the CAContext with that CAContextID in the layer
+// sharing process.
+@interface CALayerHost : CALayer
+@property CAContextID contextId;
+@end
+
+#endif // __OBJC__
+
+namespace ui {
+
+// This function will check if all of the interfaces listed above are supported
+// on the system, and return true if they are.
+bool UI_BASE_EXPORT RemoteLayerAPISupported();
+
+} // namespace ui
+
+#endif // UI_BASE_COCOA_REMOTE_LAYER_API_H_
« no previous file with comments | « content/content_common.gypi ('k') | ui/base/cocoa/remote_layer_api.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698