Skip to content

Commit 04db657

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 04db657

File tree

9 files changed

+18
-15
lines changed

9 files changed

+18
-15
lines changed

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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 9 additions & 0 deletions
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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ FLUTTER_EXPORT void FlutterDesktopMessengerSetCallback(
9494
//
9595
// See also: |FlutterDesktopMessengerRelease|
9696
FLUTTER_EXPORT FlutterDesktopMessengerRef
97-
FlutterDesktopMessengerAddRef(FlutterDesktopMessengerRef messenger);
97+
FlutterDesktopMessengerAddRef(FlutterDesktopMessengerRef messenger) SWIFT_RETURNS_RETAINED;
9898

9999
// Decrements the reference count for the |messenger|.
100100
//
@@ -125,7 +125,7 @@ FLUTTER_EXPORT bool FlutterDesktopMessengerIsAvailable(
125125
//
126126
// See also: |FlutterDesktopMessengerUnlock|
127127
FLUTTER_EXPORT FlutterDesktopMessengerRef
128-
FlutterDesktopMessengerLock(FlutterDesktopMessengerRef messenger);
128+
FlutterDesktopMessengerLock(FlutterDesktopMessengerRef messenger) SWIFT_RETURNS_UNRETAINED;
129129

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

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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ class FlutterELinuxEngine {
195195
std::unique_ptr<VsyncWaiter> vsync_waiter_;
196196

197197
bool enable_impeller_ = false;
198-
};
198+
} SWIFT_UNSAFE_REFERENCE;
199199

200200
} // namespace flutter
201201

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

Lines changed: 0 additions & 6 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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)