|
@@ -963,6 +963,30 @@ void OS_OSX::set_ime_intermediate_text_callback(ImeCallback p_callback, void *p_
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+String OS_OSX::get_unique_id() const {
|
|
|
+
|
|
|
+ static String serial_number;
|
|
|
+
|
|
|
+ if (serial_number.empty()) {
|
|
|
+ io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice"));
|
|
|
+ CFStringRef serialNumberAsCFString = NULL;
|
|
|
+ if (platformExpert) {
|
|
|
+ serialNumberAsCFString = (CFStringRef)IORegistryEntryCreateCFProperty(platformExpert, CFSTR(kIOPlatformSerialNumberKey), kCFAllocatorDefault, 0);
|
|
|
+ IOObjectRelease(platformExpert);
|
|
|
+ }
|
|
|
+
|
|
|
+ NSString *serialNumberAsNSString = nil;
|
|
|
+ if (serialNumberAsCFString) {
|
|
|
+ serialNumberAsNSString = [NSString stringWithString:(NSString *)serialNumberAsCFString];
|
|
|
+ CFRelease(serialNumberAsCFString);
|
|
|
+ }
|
|
|
+
|
|
|
+ serial_number = [serialNumberAsNSString UTF8String];
|
|
|
+ }
|
|
|
+
|
|
|
+ return serial_number;
|
|
|
+}
|
|
|
+
|
|
|
void OS_OSX::set_ime_position(const Point2 &p_pos) {
|
|
|
im_position = p_pos;
|
|
|
}
|