diff --git a/lib/filament_controller_ffi.dart b/lib/filament_controller_ffi.dart index 8d3d435a..184edd15 100644 --- a/lib/filament_controller_ffi.dart +++ b/lib/filament_controller_ffi.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:ffi'; import 'dart:io'; import 'dart:ui' as ui; +import 'dart:developer' as dev; import 'package:flutter/services.dart'; import 'package:ffi/ffi.dart'; import 'package:flutter/widgets.dart'; @@ -146,7 +147,7 @@ class FilamentControllerFFI extends FilamentController { await _channel.invokeMethod( "destroyTexture", textureDetails.value!.textureId); } - print("Texture destroyed"); + dev.log("Texture destroyed"); } /// @@ -187,7 +188,7 @@ class FilamentControllerFFI extends FilamentController { var renderingSurface = await _createRenderingSurface(); - print("Got rendering surface"); + dev.log("Got rendering surface"); _viewer = _lib.create_filament_viewer_ffi( Pointer.fromAddress(renderingSurface.sharedContext), @@ -196,7 +197,7 @@ class FilamentControllerFFI extends FilamentController { loader, renderCallback, renderCallbackOwner); - print("Created viewer"); + dev.log("Created viewer"); if (_viewer!.address == 0) { throw Exception("Failed to create viewer. Check logs for details"); } @@ -205,9 +206,9 @@ class FilamentControllerFFI extends FilamentController { _lib.create_swap_chain_ffi(_viewer!, renderingSurface.surface, rect.value!.width.toInt(), rect.value!.height.toInt()); - print("Created swap chain"); + dev.log("Created swap chain"); if (renderingSurface.textureHandle != 0) { - print( + dev.log( "Creating render target from native texture ${renderingSurface.textureHandle}"); _lib.create_render_target_ffi(_viewer!, renderingSurface.textureHandle, rect.value!.width.toInt(), rect.value!.height.toInt()); @@ -217,7 +218,7 @@ class FilamentControllerFFI extends FilamentController { textureId: renderingSurface.flutterTextureId, width: rect.value!.width.toInt(), height: rect.value!.height.toInt()); - print("texture details ${textureDetails.value}"); + dev.log("texture details ${textureDetails.value}"); _lib.update_viewport_and_camera_projection_ffi( _viewer!, rect.value!.width.toInt(), rect.value!.height.toInt(), 1.0); hasViewer.value = true; @@ -321,7 +322,7 @@ class FilamentControllerFFI extends FilamentController { "destroyTexture", textureDetails.value!.textureId); } } else if (Platform.isWindows) { - print("Resizing window with rect $rect"); + dev.log("Resizing window with rect $rect"); await _channel.invokeMethod("resizeWindow", [ rect.value!.width, rect.value!.height, @@ -344,7 +345,7 @@ class FilamentControllerFFI extends FilamentController { } if (renderingSurface.textureHandle != 0) { - print( + dev.log( "Creating render target from native texture ${renderingSurface.textureHandle}"); _lib.create_render_target_ffi(_viewer!, renderingSurface.textureHandle, rect.value!.width.toInt(), rect.value!.height.toInt()); diff --git a/lib/rendering_surface.dart b/lib/rendering_surface.dart index ccc138b8..730d9d2e 100644 --- a/lib/rendering_surface.dart +++ b/lib/rendering_surface.dart @@ -1,4 +1,5 @@ import 'dart:ffi'; +import 'dart:developer' as dev; class RenderingSurface { final int flutterTextureId; @@ -15,22 +16,23 @@ class RenderingSurface { // null on iOS/Android, void* on MacOS (pointer to metal texture), GLuid on Windows/Linux var nativeTexture = platformMessage[2] as int? ?? 0; - if(nativeTexture != 0) { + if (nativeTexture != 0) { assert(surfaceAddress == 0); } var sharedContext = platformMessage[3] as int? ?? 0; - print( + dev.log( "Using flutterTextureId $flutterTextureId, surface $surfaceAddress nativeTexture $nativeTexture and sharedContext $sharedContext"); return RenderingSurface( - sharedContext: sharedContext, + sharedContext: sharedContext, flutterTextureId: flutterTextureId, surface: Pointer.fromAddress(surfaceAddress), textureHandle: nativeTexture); } - RenderingSurface({required this.sharedContext, + RenderingSurface( + {required this.sharedContext, required this.flutterTextureId, required this.surface, required this.textureHandle}); diff --git a/lib/widgets/filament_widget.dart b/lib/widgets/filament_widget.dart index 6988adaa..49d9bb6a 100644 --- a/lib/widgets/filament_widget.dart +++ b/lib/widgets/filament_widget.dart @@ -1,5 +1,6 @@ import 'dart:io'; import 'dart:math'; +import 'dart:developer' as dev; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -144,7 +145,7 @@ class _SizedFilamentWidgetState extends State<_SizedFilamentWidget> { _pixelRatio = MediaQuery.of(context).devicePixelRatio; widget.controller.setDimensions(_rect, _pixelRatio); } catch (err) { - print("Fatal error : $err"); + dev.log("Fatal error : $err"); _error = err.toString(); } setState(() {}); @@ -157,7 +158,7 @@ class _SizedFilamentWidgetState extends State<_SizedFilamentWidget> { bool _resizing = false; Future _resize() { - print("Resizing widget"); + dev.log("Resizing widget"); final completer = Completer(); // resizing the window can be sluggish (particular in debug mode), exacerbated when simultaneously recreating the swapchain and resize the window. // to address this, whenever the widget is resized, we set a timer for Xms in the future. @@ -185,7 +186,7 @@ class _SizedFilamentWidgetState extends State<_SizedFilamentWidget> { setState(() {}); _resizing = false; } catch (err) { - print("Error resizing FilamentWidget: $err"); + dev.log("Error resizing FilamentWidget: $err"); } finally { completer.complete(); } @@ -214,21 +215,21 @@ class _SizedFilamentWidgetState extends State<_SizedFilamentWidget> { void _handleStateChange(AppLifecycleState state) async { switch (state) { case AppLifecycleState.detached: - print("Detached"); + dev.log("Detached"); if (!_wasRenderingOnInactive) { _wasRenderingOnInactive = widget.controller.rendering; } await widget.controller.setRendering(false); break; case AppLifecycleState.hidden: - print("Hidden"); + dev.log("Hidden"); if (!_wasRenderingOnInactive) { _wasRenderingOnInactive = widget.controller.rendering; } await widget.controller.setRendering(false); break; case AppLifecycleState.inactive: - print("Inactive"); + dev.log("Inactive"); if (!_wasRenderingOnInactive) { _wasRenderingOnInactive = widget.controller.rendering; } @@ -237,14 +238,14 @@ class _SizedFilamentWidgetState extends State<_SizedFilamentWidget> { await widget.controller.setRendering(false); break; case AppLifecycleState.paused: - print("Paused"); + dev.log("Paused"); if (!_wasRenderingOnInactive) { _wasRenderingOnInactive = widget.controller.rendering; } await widget.controller.setRendering(false); break; case AppLifecycleState.resumed: - print("Resumed"); + dev.log("Resumed"); await widget.controller.setRendering(_wasRenderingOnInactive); break; }