From 6ec18421bbf618da4dedda9889eac23c1c59e0d4 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Tue, 22 Mar 2022 04:57:59 +0000 Subject: [PATCH] Add obj-c message forwarding to real object --- .../driver/metal/metal_function_bridge.mm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/renderdoc/driver/metal/metal_function_bridge.mm b/renderdoc/driver/metal/metal_function_bridge.mm index d851dfb3b..ebf9fd1ec 100644 --- a/renderdoc/driver/metal/metal_function_bridge.mm +++ b/renderdoc/driver/metal/metal_function_bridge.mm @@ -40,6 +40,24 @@ [super dealloc]; } +// Use the real MTLFunction to find methods from messages +- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector +{ + id fwd = self.real; + return [fwd methodSignatureForSelector:aSelector]; +} + +// Forward any unknown messages to the real MTLFunction +- (void)forwardInvocation:(NSInvocation *)invocation +{ + SEL aSelector = [invocation selector]; + + if([self.real respondsToSelector:aSelector]) + [invocation invokeWithTarget:self.real]; + else + [super forwardInvocation:invocation]; +} + // MTLFunction : based on the protocol defined in // Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLLibrrary.h