Browse Source

libobs: Use macOS specific APIs to report free disk space

PatTheMav 1 năm trước cách đây
mục cha
commit
4a765d3bf0
2 tập tin đã thay đổi với 29 bổ sung0 xóa
  1. 25 0
      libobs/util/platform-cocoa.m
  2. 4 0
      libobs/util/platform-nix.c

+ 25 - 0
libobs/util/platform-cocoa.m

@@ -358,6 +358,31 @@ uint64_t os_get_sys_free_size(void)
     return vmstat.free_count * vm_page_size;
 }
 
+int64_t os_get_free_space(const char *path)
+{
+    if (path) {
+        NSURL *fileURL = [NSURL fileURLWithPath:@(path)];
+
+        NSDictionary *values = [fileURL resourceValuesForKeys:@[NSURLVolumeAvailableCapacityForOpportunisticUsageKey]
+                                                        error:nil];
+
+        NSNumber *availableSpace = values[NSURLVolumeAvailableCapacityForOpportunisticUsageKey];
+
+        if (availableSpace) {
+            return availableSpace.longValue;
+        }
+    }
+
+    return 0;
+}
+
+uint64_t os_get_free_disk_space(const char *dir)
+{
+    int64_t free_space = os_get_free_space(dir);
+
+    return (uint64_t) free_space;
+}
+
 static uint64_t total_memory = 0;
 static bool total_memory_initialized = false;
 

+ 4 - 0
libobs/util/platform-nix.c

@@ -571,6 +571,7 @@ void os_closedir(os_dir_t *dir)
 	}
 }
 
+#ifndef __APPLE__
 int64_t os_get_free_space(const char *path)
 {
 	struct statvfs info;
@@ -581,6 +582,7 @@ int64_t os_get_free_space(const char *path)
 
 	return ret;
 }
+#endif
 
 struct posix_glob_info {
 	struct os_glob_info base;
@@ -1136,6 +1138,7 @@ uint64_t os_get_sys_total_size(void)
 }
 #endif
 
+#ifndef __APPLE__
 uint64_t os_get_free_disk_space(const char *dir)
 {
 	struct statvfs info;
@@ -1144,6 +1147,7 @@ uint64_t os_get_free_disk_space(const char *dir)
 
 	return (uint64_t)info.f_frsize * (uint64_t)info.f_bavail;
 }
+#endif
 
 char *os_generate_uuid(void)
 {