Index: content_decryption_module.h |
diff --git a/content_decryption_module.h b/content_decryption_module.h |
index 958c5534536394907261818bb68c94702dfb04c2..06c7d38a7c544814ff12cd3d045ec4377a29d940 100644 |
--- a/content_decryption_module.h |
+++ b/content_decryption_module.h |
@@ -19,6 +19,12 @@ typedef __int64 int64_t; |
// a dynamic library even in a non-component build. |
#if defined(WIN32) |
+#if defined(__clang__) |
+#define CDM_CLASS_API [[clang::lto_visibility_public]] |
+#else |
+#define CDM_CLASS_API |
+#endif |
+ |
#if defined(CDM_IMPLEMENTATION) |
#define CDM_API __declspec(dllexport) |
#else |
@@ -27,6 +33,7 @@ typedef __int64 int64_t; |
#else // defined(WIN32) |
#define CDM_API __attribute__((visibility("default"))) |
+#define CDM_CLASS_API __attribute__((visibility("default"))) |
#endif // defined(WIN32) |
xhwang
2016/05/12 06:54:30
Could you summarize what's discussed in the bug an
krasin
2016/05/16 21:40:10
Done.
|
// The version number must be rolled when the exported functions are updated! |
@@ -379,7 +386,7 @@ enum MessageType { |
// Note to implementors of this interface: |
// Per-origin storage and the ability for users to clear it are important. |
// See http://www.w3.org/TR/encrypted-media/#privacy-storedinfo. |
-class CDM_API FileIO { |
+class CDM_CLASS_API FileIO { |
public: |
// Opens the file with |file_name| for read and write. |
// FileIOClient::OnOpenComplete() will be called after the opening |
@@ -419,7 +426,7 @@ class CDM_API FileIO { |
// When kError is returned, the FileIO object could be in an error state. All |
// following calls (other than Close()) could return kError. The CDM should |
// still call Close() to destroy the FileIO object. |
-class CDM_API FileIOClient { |
+class CDM_CLASS_API FileIOClient { |
public: |
enum Status { |
kSuccess = 0, |
@@ -460,7 +467,7 @@ class CDM_API FileIOClient { |
// provided in CreateCdmInstance() to allocate any Buffer that needs to |
// be passed back to the caller. Implementations must call Buffer::Destroy() |
// when a Buffer is created that will never be returned to the caller. |
-class CDM_API ContentDecryptionModule_7 { |
+class CDM_CLASS_API ContentDecryptionModule_7 { |
public: |
static const int kVersion = 7; |
typedef Host_7 Host; |
@@ -639,7 +646,7 @@ class CDM_API ContentDecryptionModule_7 { |
// provided in CreateCdmInstance() to allocate any Buffer that needs to |
// be passed back to the caller. Implementations must call Buffer::Destroy() |
// when a Buffer is created that will never be returned to the caller. |
-class CDM_API ContentDecryptionModule_8 { |
+class CDM_CLASS_API ContentDecryptionModule_8 { |
public: |
static const int kVersion = 8; |
typedef Host_8 Host; |
@@ -824,7 +831,7 @@ class CDM_API ContentDecryptionModule_8 { |
typedef ContentDecryptionModule_8 ContentDecryptionModule; |
// Represents a buffer created by Allocator implementations. |
-class CDM_API Buffer { |
+class CDM_CLASS_API Buffer { |
public: |
// Destroys the buffer in the same context as it was created. |
virtual void Destroy() = 0; |
@@ -843,7 +850,7 @@ class CDM_API Buffer { |
void operator=(const Buffer&); |
}; |
-class CDM_API Host_7 { |
+class CDM_CLASS_API Host_7 { |
public: |
static const int kVersion = 7; |
@@ -980,7 +987,7 @@ class CDM_API Host_7 { |
virtual ~Host_7() {} |
}; |
-class CDM_API Host_8 { |
+class CDM_CLASS_API Host_8 { |
public: |
static const int kVersion = 8; |
@@ -1118,7 +1125,7 @@ class CDM_API Host_8 { |
}; |
// Represents a decrypted block that has not been decoded. |
-class CDM_API DecryptedBlock { |
+class CDM_CLASS_API DecryptedBlock { |
public: |
virtual void SetDecryptedBuffer(Buffer* buffer) = 0; |
virtual Buffer* DecryptedBuffer() = 0; |
@@ -1133,7 +1140,7 @@ class CDM_API DecryptedBlock { |
virtual ~DecryptedBlock() {} |
}; |
-class CDM_API VideoFrame { |
+class CDM_CLASS_API VideoFrame { |
public: |
enum VideoPlane { |
kYPlane = 0, |
@@ -1176,7 +1183,7 @@ class CDM_API VideoFrame { |
// |
// |<----------------- AudioFrames ------------------>| |
// | audio buffer 0 | audio buffer 1 | audio buffer 2 | |
-class CDM_API AudioFrames { |
+class CDM_CLASS_API AudioFrames { |
public: |
virtual void SetFrameBuffer(Buffer* buffer) = 0; |
virtual Buffer* FrameBuffer() = 0; |