iOS fixes
This commit is contained in:
@@ -25,10 +25,6 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
||||
|
||||
static var messenger : FlutterBinaryMessenger? = nil;
|
||||
|
||||
var loadResourcePtr: UnsafeMutableRawPointer? = nil
|
||||
var freeResourcePtr: UnsafeMutableRawPointer? = nil
|
||||
|
||||
|
||||
var loadResource : @convention(c) (UnsafePointer<Int8>?, UnsafeMutableRawPointer?) -> ResourceBuffer = { uri, resourcesPtr in
|
||||
|
||||
let instance:SwiftPolyvoxFilamentPlugin = Unmanaged<SwiftPolyvoxFilamentPlugin>.fromOpaque(resourcesPtr!).takeUnretainedValue()
|
||||
@@ -130,9 +126,9 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
||||
}
|
||||
|
||||
@objc func doRender() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
func createDisplayLink() {
|
||||
displayLink = CADisplayLink(target: self,
|
||||
selector: #selector(doRender))
|
||||
@@ -141,9 +137,8 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
||||
|
||||
public func copyPixelBuffer() -> Unmanaged<CVPixelBuffer>? {
|
||||
if(pixelBuffer == nil) {
|
||||
print("empty")
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
return Unmanaged.passRetained(pixelBuffer!);
|
||||
}
|
||||
|
||||
@@ -186,9 +181,8 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
||||
case "createTexture":
|
||||
let args = call.arguments as! Array<Int32>
|
||||
createPixelBuffer(width:Int(args[0]), height:Int(args[1]))
|
||||
createDisplayLink()
|
||||
// we no longer need to call createDisplayLink() because we drive our render ticker from the Dart side, not the platform side
|
||||
result(self.flutterTextureId)
|
||||
// print("texture id \(pixelBufferflutterTextureId)")
|
||||
case "getResourceLoader":
|
||||
let callback = make_resource_loader(loadResource, freeResource, Unmanaged.passUnretained(self).toOpaque())
|
||||
result(unsafeBitCast(callback, to:Int64.self))
|
||||
@@ -197,7 +191,6 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
||||
case "getSurface":
|
||||
var pixelBufferTextureId = Int64(Int(bitPattern:unsafeBitCast(pixelBuffer!, to: UnsafeMutableRawPointer.self)))
|
||||
result(pixelBufferTextureId)
|
||||
|
||||
case "getContext":
|
||||
result(0) //nullptr
|
||||
case "resize":
|
||||
|
||||
@@ -46,10 +46,16 @@ extern "C" {
|
||||
typedef void (*FreeResource)(ResourceBuffer);
|
||||
typedef void (*FreeResourceFromOwner)(ResourceBuffer, void* const owner);
|
||||
|
||||
// this may be compiled as either C or C++, depending on which compiler is being invoked (e.g. binding to Swift will compile as C).
|
||||
// the former does not allow default initialization to be specified inline), so we need to explicitly set the unused members to nullptr
|
||||
struct ResourceLoaderWrapper {
|
||||
#if defined(__cplusplus)
|
||||
ResourceLoaderWrapper(LoadResource loader, FreeResource freeResource) : mLoadResource(loader), mFreeResource(freeResource) {};
|
||||
ResourceLoaderWrapper(LoadResourceFromOwner loader, FreeResourceFromOwner freeResource, void* const owner) : mOwner(owner), mLoadResourceFromOwner(loader), mFreeResourceFromOwner(freeResource) {};
|
||||
ResourceLoaderWrapper(LoadResource loader, FreeResource freeResource) : mLoadResource(loader), mFreeResource(freeResource), mLoadResourceFromOwner(nullptr), mFreeResourceFromOwner(nullptr),
|
||||
mOwner(nullptr) {}
|
||||
|
||||
ResourceLoaderWrapper(LoadResourceFromOwner loader, FreeResourceFromOwner freeResource, void* const owner) : mLoadResource(nullptr), mFreeResource(nullptr), mLoadResourceFromOwner(loader), mFreeResourceFromOwner(freeResource), mOwner(owner) {
|
||||
|
||||
};
|
||||
|
||||
ResourceBuffer load(const char* uri) {
|
||||
if(mLoadResourceFromOwner) {
|
||||
@@ -66,11 +72,11 @@ extern "C" {
|
||||
}
|
||||
}
|
||||
#endif
|
||||
void* mOwner = nullptr;
|
||||
LoadResource mLoadResource = nullptr;
|
||||
FreeResource mFreeResource = nullptr;
|
||||
LoadResourceFromOwner mLoadResourceFromOwner = nullptr;
|
||||
FreeResourceFromOwner mFreeResourceFromOwner = nullptr;
|
||||
LoadResource mLoadResource;
|
||||
FreeResource mFreeResource;
|
||||
LoadResourceFromOwner mLoadResourceFromOwner;
|
||||
FreeResourceFromOwner mFreeResourceFromOwner;
|
||||
void* mOwner;
|
||||
};
|
||||
typedef struct ResourceLoaderWrapper ResourceLoaderWrapper;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user