enumerateWindows method
Enumerate available windows
Implementation
@override
Future<List<MiniAVDeviceInfo>> enumerateWindows() async {
final windowsPtrPtr = calloc<ffi.Pointer<bindings.MiniAVDeviceInfo>>();
final countPtr = calloc<ffi.Uint32>();
try {
final result = bindings.MiniAV_Screen_EnumerateWindows(
windowsPtrPtr,
countPtr,
);
if (result != bindings.MiniAVResultCode.MINIAV_SUCCESS) {
throw Exception('Failed to enumerate windows: ${result.name}');
}
final windowsArrayPtr = windowsPtrPtr.value;
final count = countPtr.value;
if (windowsArrayPtr == ffi.nullptr || count == 0) {
return <MiniAVDeviceInfo>[];
}
final windowList = <MiniAVDeviceInfo>[];
for (int i = 0; i < count; i++) {
final ffiDevice = (windowsArrayPtr + i).ref;
windowList.add(
DeviceInfoFFIToPlatform.fromNative(ffiDevice).toPlatformType(),
);
}
bindings.MiniAV_FreeDeviceList(windowsArrayPtr, count);
return windowList;
} finally {
calloc.free(windowsPtrPtr);
calloc.free(countPtr);
}
}