feat, multi_flutter_ui_sessions

Signed-off-by: dignow <linlong1265@gmail.com>
This commit is contained in:
dignow
2023-10-08 21:44:54 +08:00
parent 5e616dd502
commit 013d307bcd
83 changed files with 2954 additions and 1319 deletions

View File

@@ -4,25 +4,30 @@ import 'package:texture_rgba_renderer/texture_rgba_renderer.dart';
import '../../common.dart';
import './platform_model.dart';
final useTextureRender = bind.mainUseTextureRender();
class RenderTexture {
final RxInt textureId = RxInt(-1);
int _textureKey = -1;
int _display = 0;
SessionID? _sessionId;
static final useTextureRender = bind.mainUseTextureRender();
final textureRenderer = TextureRgbaRenderer();
RenderTexture();
create(SessionID sessionId) {
int get display => _display;
create(int d, SessionID sessionId) {
if (useTextureRender) {
_display = d;
_textureKey = bind.getNextTextureKey();
_sessionId = sessionId;
textureRenderer.createTexture(_textureKey).then((id) async {
if (id != -1) {
final ptr = await textureRenderer.getTexturePtr(_textureKey);
platformFFI.registerTexture(sessionId, ptr);
platformFFI.registerTexture(sessionId, display, ptr);
textureId.value = id;
}
});
@@ -32,7 +37,7 @@ class RenderTexture {
destroy(bool unregisterTexture) async {
if (useTextureRender && _textureKey != -1 && _sessionId != null) {
if (unregisterTexture) {
platformFFI.registerTexture(_sessionId!, 0);
platformFFI.registerTexture(_sessionId!, display, 0);
}
await textureRenderer.closeTexture(_textureKey);
_textureKey = -1;