Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 0daf9a2

Browse files
committed
fix cr comments
1 parent 07e866e commit 0daf9a2

File tree

7 files changed

+130
-77
lines changed

7 files changed

+130
-77
lines changed

ci/licenses_golden/licenses_flutter

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,6 +1056,7 @@ FILE: ../../../flutter/shell/platform/darwin/macos/framework/Source/FlutterMouse
10561056
FILE: ../../../flutter/shell/platform/darwin/macos/framework/Source/FlutterMouseCursorPlugin.mm
10571057
FILE: ../../../flutter/shell/platform/darwin/macos/framework/Source/FlutterOpenGLRenderer.h
10581058
FILE: ../../../flutter/shell/platform/darwin/macos/framework/Source/FlutterOpenGLRenderer.mm
1059+
FILE: ../../../flutter/shell/platform/darwin/macos/framework/Source/FlutterOpenGLRendererTest.mm
10591060
FILE: ../../../flutter/shell/platform/darwin/macos/framework/Source/FlutterResizeSynchronizer.h
10601061
FILE: ../../../flutter/shell/platform/darwin/macos/framework/Source/FlutterResizeSynchronizer.mm
10611062
FILE: ../../../flutter/shell/platform/darwin/macos/framework/Source/FlutterSurfaceManager.h

shell/platform/darwin/macos/BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ executable("flutter_desktop_darwin_unittests") {
117117

118118
sources = [
119119
"framework/Source/FlutterEngineTest.mm",
120+
"framework/Source/FlutterOpenGLRendererTest.mm",
120121
"framework/Source/FlutterViewControllerTest.mm",
121122
]
122123

shell/platform/darwin/macos/framework/Source/FlutterEngine.mm

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -510,12 +510,24 @@ - (int64_t)registerTexture:(id<FlutterTexture>)texture {
510510
return [_openGLRenderer registerTexture:texture];
511511
}
512512

513+
- (bool)embedderRegisterTextureWithId:(int64_t)textureId {
514+
return _embedderAPI.RegisterExternalTexture(_engine, textureId) == kSuccess;
515+
}
516+
513517
- (void)textureFrameAvailable:(int64_t)textureID {
514-
return [_openGLRenderer textureFrameAvailable:textureID];
518+
[_openGLRenderer textureFrameAvailable:textureID];
519+
}
520+
521+
- (bool)embedderMarkTextureFrameAvailable:(int64_t)textureID {
522+
return _embedderAPI.MarkExternalTextureFrameAvailable(_engine, textureID) == kSuccess;
515523
}
516524

517525
- (void)unregisterTexture:(int64_t)textureID {
518-
return [_openGLRenderer unregisterTexture:textureID];
526+
[_openGLRenderer unregisterTexture:textureID];
527+
}
528+
529+
- (bool)embedderUnregisterTextureWithId:(int64_t)textureID {
530+
return _embedderAPI.UnregisterExternalTexture(_engine, textureID) == kSuccess;
519531
}
520532

521533
#pragma mark - Task runner integration

shell/platform/darwin/macos/framework/Source/FlutterEngineTest.mm

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -52,66 +52,4 @@
5252
[engine shutDownEngine];
5353
}
5454

55-
TEST(FlutterEngine, RegisterExternalTexture) {
56-
FlutterEngine* engine = CreateTestEngine();
57-
EXPECT_TRUE([engine runWithEntrypoint:@"main"]);
58-
59-
id<FlutterTexture> flutterTexture = OCMProtocolMock(@protocol(FlutterTexture));
60-
bool called = false;
61-
62-
engine.embedderAPI.RegisterExternalTexture =
63-
MOCK_ENGINE_PROC(RegisterExternalTexture, [&](auto engine, int64_t textureIdentifier) {
64-
called = true;
65-
EXPECT_EQ(textureIdentifier, reinterpret_cast<int64_t>(flutterTexture));
66-
return kSuccess;
67-
});
68-
69-
[engine.openGLRenderer registerTexture:flutterTexture];
70-
EXPECT_TRUE(called);
71-
72-
[engine shutDownEngine];
73-
}
74-
75-
TEST(FlutterEngine, UnregisterExternalTexture) {
76-
FlutterEngine* engine = CreateTestEngine();
77-
EXPECT_TRUE([engine runWithEntrypoint:@"main"]);
78-
79-
id<FlutterTexture> flutterTexture = OCMProtocolMock(@protocol(FlutterTexture));
80-
bool called = false;
81-
82-
int64_t registeredTextureId = [engine.openGLRenderer registerTexture:flutterTexture];
83-
engine.embedderAPI.UnregisterExternalTexture =
84-
MOCK_ENGINE_PROC(UnregisterExternalTexture, [&](auto engine, int64_t textureIdentifier) {
85-
called = true;
86-
EXPECT_EQ(textureIdentifier, registeredTextureId);
87-
return kSuccess;
88-
});
89-
90-
[engine.openGLRenderer unregisterTexture:registeredTextureId];
91-
EXPECT_TRUE(called);
92-
93-
[engine shutDownEngine];
94-
}
95-
96-
TEST(FlutterEngine, MarkExternalTextureFrameAvailable) {
97-
FlutterEngine* engine = CreateTestEngine();
98-
EXPECT_TRUE([engine runWithEntrypoint:@"main"]);
99-
100-
id<FlutterTexture> flutterTexture = OCMProtocolMock(@protocol(FlutterTexture));
101-
bool called = false;
102-
103-
int64_t registeredTextureId = [engine.openGLRenderer registerTexture:flutterTexture];
104-
engine.embedderAPI.MarkExternalTextureFrameAvailable = MOCK_ENGINE_PROC(
105-
MarkExternalTextureFrameAvailable, [&](auto engine, int64_t textureIdentifier) {
106-
called = true;
107-
EXPECT_EQ(textureIdentifier, registeredTextureId);
108-
return kSuccess;
109-
});
110-
111-
[engine.openGLRenderer textureFrameAvailable:registeredTextureId];
112-
EXPECT_TRUE(called);
113-
114-
[engine shutDownEngine];
115-
}
116-
11755
} // namespace flutter::testing

shell/platform/darwin/macos/framework/Source/FlutterEngine_Internal.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,19 @@
3737
*/
3838
- (void)sendPointerEvent:(const FlutterPointerEvent&)event;
3939

40+
/**
41+
* Registers an external texture with the given id. Returns true on success.
42+
*/
43+
- (bool)embedderRegisterTextureWithId:(int64_t)textureId;
44+
45+
/**
46+
* Marks texture with the given id as available. Returns true on success.
47+
*/
48+
- (bool)embedderMarkTextureFrameAvailable:(int64_t)textureID;
49+
50+
/**
51+
* Unregisters an external texture with the given id. Returns true on success.
52+
*/
53+
- (bool)embedderUnregisterTextureWithId:(int64_t)textureID;
54+
4055
@end

shell/platform/darwin/macos/framework/Source/FlutterOpenGLRenderer.mm

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,12 @@ - (BOOL)populateTextureWithIdentifier:(int64_t)textureID
140140
}
141141

142142
- (int64_t)registerTexture:(id<FlutterTexture>)texture {
143-
FlutterExternalTextureGL* FlutterTexture =
143+
FlutterExternalTextureGL* externalTexture =
144144
[[FlutterExternalTextureGL alloc] initWithFlutterTexture:texture];
145-
int64_t textureID = [FlutterTexture textureID];
146-
FlutterEngineResult success =
147-
_flutterEngine.embedderAPI.RegisterExternalTexture(_engine, textureID);
148-
if (success == FlutterEngineResult::kSuccess) {
149-
_textures[@(textureID)] = FlutterTexture;
145+
int64_t textureID = [externalTexture textureID];
146+
bool success = [_flutterEngine embedderRegisterTextureWithId:textureID];
147+
if (success) {
148+
_textures[@(textureID)] = externalTexture;
150149
return textureID;
151150
} else {
152151
NSLog(@"Unable to register the texture with id: %lld.", textureID);
@@ -155,24 +154,22 @@ - (int64_t)registerTexture:(id<FlutterTexture>)texture {
155154
}
156155

157156
- (void)textureFrameAvailable:(int64_t)textureID {
158-
FlutterEngineResult success =
159-
_flutterEngine.embedderAPI.MarkExternalTextureFrameAvailable(_engine, textureID);
160-
if (success != FlutterEngineResult::kSuccess) {
157+
bool success = [_flutterEngine embedderMarkTextureFrameAvailable:textureID];
158+
if (success) {
161159
NSLog(@"Unable to mark texture with id %lld as available.", textureID);
162160
}
163161
}
164162

165163
- (void)unregisterTexture:(int64_t)textureID {
166-
FlutterEngineResult success =
167-
_flutterEngine.embedderAPI.UnregisterExternalTexture(_engine, textureID);
168-
if (success == FlutterEngineResult::kSuccess) {
164+
bool success = [_flutterEngine embedderUnregisterTextureWithId:textureID];
165+
if (success) {
169166
[_textures removeObjectForKey:@(textureID)];
170167
} else {
171168
NSLog(@"Unable to unregister texture with id: %lld.", textureID);
172169
}
173170
}
174171

175-
#pragma mark - Helper methods to create rendering config for embedder.
172+
#pragma mark - Private methods
176173

177174
- (FlutterRendererConfig)createRendererConfig {
178175
const FlutterRendererConfig rendererConfig = {
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
#import <OCMock/OCMock.h>
6+
7+
#import "flutter/shell/platform/darwin/macos/framework/Headers/FlutterEngine.h"
8+
#import "flutter/shell/platform/darwin/macos/framework/Source/FlutterDartProject_Internal.h"
9+
#import "flutter/shell/platform/darwin/macos/framework/Source/FlutterEngine_Internal.h"
10+
#include "flutter/shell/platform/embedder/embedder.h"
11+
#include "flutter/shell/platform/embedder/test_utils/proc_table_replacement.h"
12+
#include "flutter/testing/testing.h"
13+
14+
namespace flutter::testing {
15+
16+
namespace {
17+
// Returns an engine configured for the text fixture resource configuration.
18+
FlutterEngine* CreateTestEngine() {
19+
NSString* fixtures = @(testing::GetFixturesPath());
20+
FlutterDartProject* project = [[FlutterDartProject alloc]
21+
initWithAssetsPath:fixtures
22+
ICUDataPath:[fixtures stringByAppendingString:@"/icudtl.dat"]];
23+
return [[FlutterEngine alloc] initWithName:@"test" project:project allowHeadlessExecution:true];
24+
}
25+
} // namespace
26+
27+
TEST(FlutterOpenGLRenderer, RegisterExternalTexture) {
28+
FlutterEngine* engine = CreateTestEngine();
29+
EXPECT_TRUE([engine runWithEntrypoint:@"main"]);
30+
31+
id<FlutterTexture> flutterTexture = OCMProtocolMock(@protocol(FlutterTexture));
32+
bool called = false;
33+
34+
engine.embedderAPI.RegisterExternalTexture =
35+
MOCK_ENGINE_PROC(RegisterExternalTexture, [&](auto engine, int64_t textureIdentifier) {
36+
called = true;
37+
EXPECT_EQ(textureIdentifier, reinterpret_cast<int64_t>(flutterTexture));
38+
return kSuccess;
39+
});
40+
41+
[engine.openGLRenderer registerTexture:flutterTexture];
42+
EXPECT_TRUE(called);
43+
44+
[engine shutDownEngine];
45+
}
46+
47+
TEST(FlutterOpenGLRenderer, UnregisterExternalTexture) {
48+
FlutterEngine* engine = CreateTestEngine();
49+
EXPECT_TRUE([engine runWithEntrypoint:@"main"]);
50+
51+
id<FlutterTexture> flutterTexture = OCMProtocolMock(@protocol(FlutterTexture));
52+
bool called = false;
53+
54+
int64_t registeredTextureId = [engine.openGLRenderer registerTexture:flutterTexture];
55+
engine.embedderAPI.UnregisterExternalTexture =
56+
MOCK_ENGINE_PROC(UnregisterExternalTexture, [&](auto engine, int64_t textureIdentifier) {
57+
called = true;
58+
EXPECT_EQ(textureIdentifier, registeredTextureId);
59+
return kSuccess;
60+
});
61+
62+
[engine.openGLRenderer unregisterTexture:registeredTextureId];
63+
EXPECT_TRUE(called);
64+
65+
[engine shutDownEngine];
66+
}
67+
68+
TEST(FlutterOpenGLRenderer, MarkExternalTextureFrameAvailable) {
69+
FlutterEngine* engine = CreateTestEngine();
70+
EXPECT_TRUE([engine runWithEntrypoint:@"main"]);
71+
72+
id<FlutterTexture> flutterTexture = OCMProtocolMock(@protocol(FlutterTexture));
73+
bool called = false;
74+
75+
int64_t registeredTextureId = [engine.openGLRenderer registerTexture:flutterTexture];
76+
engine.embedderAPI.MarkExternalTextureFrameAvailable = MOCK_ENGINE_PROC(
77+
MarkExternalTextureFrameAvailable, [&](auto engine, int64_t textureIdentifier) {
78+
called = true;
79+
EXPECT_EQ(textureIdentifier, registeredTextureId);
80+
return kSuccess;
81+
});
82+
83+
[engine.openGLRenderer textureFrameAvailable:registeredTextureId];
84+
EXPECT_TRUE(called);
85+
86+
[engine shutDownEngine];
87+
}
88+
89+
} // namespace flutter::testing

0 commit comments

Comments
 (0)