Skip to content

Commit 4e74bab

Browse files
committed
Mark FlutterELinuxEngine, FlutterELinuxView and FlutterELinuxTextureRegistrar
as unsafe references for importing into Swift, consolidating Swift annotation macro wrappers into flutter_export.h. This patch allows the importing of C++ engine APIs into Swift, using the Swift C++ bridging layer. Signed-off-by: Luke Howard <[email protected]>
1 parent 61b90d5 commit 4e74bab

File tree

9 files changed

+23
-18
lines changed

9 files changed

+23
-18
lines changed

src/flutter/shell/platform/common/client_wrapper/include/flutter/texture_registrar.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ class TextureRegistrar {
136136
// Unregisters an existing texture object.
137137
// DEPRECATED: Use UnregisterTexture(texture_id, optional_callback) instead.
138138
virtual bool UnregisterTexture(int64_t texture_id) = 0;
139-
};
139+
} SWIFT_UNSAFE_REFERENCE;
140140

141141
} // namespace flutter
142142

src/flutter/shell/platform/common/public/flutter_export.h

+9
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,13 @@
2525

2626
#endif // FLUTTER_DESKTOP_LIBRARY
2727

28+
#if __has_include(<swift/bridging>)
29+
#include <swift/bridging>
30+
#else
31+
#define SWIFT_UNSAFE_REFERENCE
32+
#define SWIFT_SHARED_REFERENCE(_retain, _release)
33+
#define SWIFT_RETURNS_RETAINED
34+
#define SWIFT_RETURNS_UNRETAINED
35+
#endif
36+
2837
#endif // FLUTTER_SHELL_PLATFORM_COMMON_PUBLIC_FLUTTER_EXPORT_H_

src/flutter/shell/platform/common/public/flutter_messenger.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ FLUTTER_EXPORT void FlutterDesktopMessengerSetCallback(
9393
// Operation is thread-safe.
9494
//
9595
// See also: |FlutterDesktopMessengerRelease|
96-
FLUTTER_EXPORT FlutterDesktopMessengerRef
97-
FlutterDesktopMessengerAddRef(FlutterDesktopMessengerRef messenger);
96+
FLUTTER_EXPORT FlutterDesktopMessengerRef FlutterDesktopMessengerAddRef(
97+
FlutterDesktopMessengerRef messenger) SWIFT_RETURNS_RETAINED;
9898

9999
// Decrements the reference count for the |messenger|.
100100
//
@@ -124,8 +124,8 @@ FLUTTER_EXPORT bool FlutterDesktopMessengerIsAvailable(
124124
// Returns the |messenger| value.
125125
//
126126
// See also: |FlutterDesktopMessengerUnlock|
127-
FLUTTER_EXPORT FlutterDesktopMessengerRef
128-
FlutterDesktopMessengerLock(FlutterDesktopMessengerRef messenger);
127+
FLUTTER_EXPORT FlutterDesktopMessengerRef FlutterDesktopMessengerLock(
128+
FlutterDesktopMessengerRef messenger) SWIFT_RETURNS_UNRETAINED;
129129

130130
// Unlocks the `FlutterDesktopMessengerRef`.
131131
//

src/flutter/shell/platform/common/public/flutter_plugin_registrar.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ typedef void (*FlutterDesktopOnPluginRegistrarDestroyed)(
2626
// Returns the engine messenger associated with this registrar.
2727
FLUTTER_EXPORT FlutterDesktopMessengerRef
2828
FlutterDesktopPluginRegistrarGetMessenger(
29-
FlutterDesktopPluginRegistrarRef registrar);
29+
FlutterDesktopPluginRegistrarRef registrar) SWIFT_RETURNS_UNRETAINED;
3030

3131
// Returns the texture registrar associated with this registrar.
3232
FLUTTER_EXPORT FlutterDesktopTextureRegistrarRef

src/flutter/shell/platform/linux_embedded/flutter_elinux_engine.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,9 @@ class FlutterELinuxEngine {
7171
// Sets switches member to the given switches.
7272
void SetSwitches(const std::vector<std::string>& switches);
7373

74-
FlutterDesktopMessengerRef messenger() { return messenger_.get(); }
74+
FlutterDesktopMessengerRef messenger() SWIFT_RETURNS_UNRETAINED {
75+
return messenger_.get();
76+
}
7577

7678
IncomingMessageDispatcher* message_dispatcher() {
7779
return message_dispatcher_.get();
@@ -195,7 +197,7 @@ class FlutterELinuxEngine {
195197
std::unique_ptr<VsyncWaiter> vsync_waiter_;
196198

197199
bool enable_impeller_ = false;
198-
};
200+
} SWIFT_UNSAFE_REFERENCE;
199201

200202
} // namespace flutter
201203

src/flutter/shell/platform/linux_embedded/flutter_elinux_state.h

-6
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,6 @@
99
#include <memory>
1010
#include <mutex>
1111

12-
#if __has_include(<swift/bridging>)
13-
#include <swift/bridging>
14-
#else
15-
#define SWIFT_SHARED_REFERENCE(_retain, _release)
16-
#endif
17-
1812
#include "flutter/shell/platform/common/client_wrapper/include/flutter/plugin_registrar.h"
1913
#include "flutter/shell/platform/common/incoming_message_dispatcher.h"
2014
#include "flutter/shell/platform/embedder/embedder.h"

src/flutter/shell/platform/linux_embedded/flutter_elinux_texture_registrar.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class FlutterELinuxTextureRegistrar {
5656
std::mutex map_mutex_;
5757

5858
int64_t EmplaceTexture(std::unique_ptr<ExternalTexture> texture);
59-
};
59+
} SWIFT_UNSAFE_REFERENCE;
6060

6161
}; // namespace flutter
6262

src/flutter/shell/platform/linux_embedded/flutter_elinux_view.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ class FlutterELinuxView : public WindowBindingHandlerDelegate {
318318
// Current view rotation (FlutterTransformation).
319319
FlutterTransformation view_rotation_transformation_ = {
320320
1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0};
321-
};
321+
} SWIFT_UNSAFE_REFERENCE;
322322

323323
} // namespace flutter
324324

src/flutter/shell/platform/linux_embedded/public/flutter_elinux.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -216,8 +216,8 @@ FLUTTER_EXPORT FlutterDesktopViewRef FlutterDesktopPluginRegistrarGetView(
216216
FlutterDesktopPluginRegistrarRef registrar);
217217

218218
// Returns the messenger associated with the engine.
219-
FLUTTER_EXPORT FlutterDesktopMessengerRef
220-
FlutterDesktopEngineGetMessenger(FlutterDesktopEngineRef engine);
219+
FLUTTER_EXPORT FlutterDesktopMessengerRef FlutterDesktopEngineGetMessenger(
220+
FlutterDesktopEngineRef engine) SWIFT_RETURNS_UNRETAINED;
221221

222222
// Returns the texture registrar associated with the engine.
223223
FLUTTER_EXPORT FlutterDesktopTextureRegistrarRef

0 commit comments

Comments
 (0)