From 0fd153f9e1823b90f13f7dfa7af381f993e2a86f Mon Sep 17 00:00:00 2001 From: Developer-Ecosystem-Engineering <65677710+Developer-Ecosystem-Engineering@users.noreply.github.com> Date: Wed, 16 Jun 2021 11:52:50 -0700 Subject: [PATCH] mac-capture: Update display names Display names for captured displays should render human readable --- plugins/mac-capture/mac-display-capture.m | 43 ++++++++++++++++++++--- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/plugins/mac-capture/mac-display-capture.m b/plugins/mac-capture/mac-display-capture.m index 35e3a19b3..9ebd197c2 100644 --- a/plugins/mac-capture/mac-display-capture.m +++ b/plugins/mac-capture/mac-display-capture.m @@ -3,6 +3,7 @@ #include #include +#import #import #import @@ -602,11 +603,43 @@ static obs_properties_t *display_capture_properties(void *unused) props, "display", obs_module_text("DisplayCapture.Display"), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); - for (unsigned i = 0; i < [NSScreen screens].count; i++) { - char buf[10]; - sprintf(buf, "%u", i); - obs_property_list_add_int(list, buf, i); - } + [[NSScreen screens] enumerateObjectsUsingBlock:^( + NSScreen *_Nonnull screen, NSUInteger index, + BOOL *_Nonnull stop + __attribute__((unused))) { + char dimension_buffer[4][12]; + char name_buffer[256]; + sprintf(dimension_buffer[0], "%u", + (uint32_t)[screen frame].size.width); + sprintf(dimension_buffer[1], "%u", + (uint32_t)[screen frame].size.height); + sprintf(dimension_buffer[2], "%d", + (int32_t)[screen frame].origin.x); + sprintf(dimension_buffer[3], "%d", + (int32_t)[screen frame].origin.y); + +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_15 + if (__builtin_available(macOS 10.15, *)) { + sprintf(name_buffer, + "%.200s: %.12sx%.12s @ %.12s,%.12s", + [[screen localizedName] UTF8String], + dimension_buffer[0], dimension_buffer[1], + dimension_buffer[2], dimension_buffer[3]); + } else +#endif + { + char disp_num_buffer[11]; + sprintf(disp_num_buffer, "%lu", (unsigned long)index); + sprintf(name_buffer, + "%.189s %.10s: %.12sx%.12s @ %.12s,%.12s", + obs_module_text("DisplayCapture.Display"), + disp_num_buffer, dimension_buffer[0], + dimension_buffer[1], dimension_buffer[2], + dimension_buffer[3]); + } + + obs_property_list_add_int(list, name_buffer, index); + }]; obs_properties_add_bool(props, "show_cursor", obs_module_text("DisplayCapture.ShowCursor"));