Skip to content

Commit 92cabf9

Browse files
committed
Correct struct for iOS 11+
1 parent 7c152f9 commit 92cabf9

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

Header.h

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ typedef struct CMBaseProtocolTable CMBaseProtocolTable;
2222
typedef OSStatus (*CMBaseObjectCopyPropertyFunction)(CMBaseObjectRef object, CFStringRef propertyKey, CFAllocatorRef allocator, void *propertyValueOut);
2323
typedef OSStatus (*CMBaseObjectSetPropertyFunction)(CMBaseObjectRef object, CFStringRef propertyKey, CFTypeRef propertyValue);
2424

25-
typedef struct __attribute__((packed)) {
25+
typedef struct {
2626
CMBaseClassVersion version;
2727
size_t derivedStorageSize;
2828
Boolean (*equal)(CMBaseObjectRef o, CMBaseObjectRef compareTo);
@@ -35,11 +35,29 @@ typedef struct __attribute__((packed)) {
3535
const CMBaseProtocolTable *protocolTable;
3636
} CMBaseClass;
3737

38+
typedef struct __attribute__((packed)) {
39+
CMBaseClassVersion version;
40+
size_t derivedStorageSize;
41+
Boolean (*equal)(CMBaseObjectRef o, CMBaseObjectRef compareTo);
42+
OSStatus (*invalidate)(CMBaseObjectRef o);
43+
void (*finalize)(CMBaseObjectRef o);
44+
CFStringRef (*copyDebugDescription)(CMBaseObjectRef o);
45+
CMBaseObjectCopyPropertyFunction copyProperty;
46+
CMBaseObjectSetPropertyFunction setProperty;
47+
OSStatus (*notificationBarrier)(CMBaseObjectRef o);
48+
const CMBaseProtocolTable *protocolTable;
49+
} CMBaseClass_iOS10;
50+
3851
typedef struct {
3952
const struct OpaqueCMBaseVTableReserved *reserved;
4053
const CMBaseClass *baseClass;
4154
} CMBaseVTable;
4255

56+
typedef struct {
57+
const struct OpaqueCMBaseVTableReserved *reserved;
58+
const CMBaseClass_iOS10 *baseClass;
59+
} CMBaseVTable_iOS10;
60+
4361
const CMBaseVTable *CMBaseObjectGetVTable(CMBaseObjectRef o);
4462

4563
@interface BWFigCaptureStream : NSObject

TLDeviceManager.m

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,13 @@ - (BOOL)setupStream {
7373
}
7474
}
7575
if (streamRef) {
76-
const CMBaseVTable *vtable = CMBaseObjectGetVTable((CMBaseObjectRef)streamRef);
77-
streamSetProperty = vtable->baseClass->setProperty;
76+
if (@available(iOS 11.0, *)) {
77+
const CMBaseVTable *vtable = CMBaseObjectGetVTable((CMBaseObjectRef)streamRef);
78+
streamSetProperty = vtable->baseClass->setProperty;
79+
} else {
80+
const CMBaseVTable_iOS10 *vtable = (const CMBaseVTable_iOS10 *)CMBaseObjectGetVTable((CMBaseObjectRef)streamRef);
81+
streamSetProperty = vtable->baseClass->setProperty;
82+
}
7883
} else
7984
stream = [vendor copyStreamForFlashlightWithPosition:1 deviceType:2 forDevice:device];
8085
if (!streamSetProperty && !stream) {

0 commit comments

Comments
 (0)