diff --git a/src/screen_capturer/linux/screen_capturer_x11.cpp b/src/screen_capturer/linux/screen_capturer_x11.cpp index d928fd7..c389d5c 100644 --- a/src/screen_capturer/linux/screen_capturer_x11.cpp +++ b/src/screen_capturer/linux/screen_capturer_x11.cpp @@ -36,9 +36,21 @@ int ScreenCapturerX11::Init(const int fps, cb_desktop_data cb) { XRRCrtcInfo* crtc_info = XRRGetCrtcInfo(display_, screen_res_, output_info->crtc); - display_info_list_.push_back( - DisplayInfo((void*)display_, output_info->name, true, crtc_info->x, - crtc_info->y, crtc_info->width, crtc_info->height)); + std::string name(output_info->name); + + if (name.empty()) { + name = "Display" + std::to_string(i + 1); + } + + // clean display name, remove non-alphanumeric characters + name.erase( + std::remove_if(name.begin(), name.end(), + [](unsigned char c) { return !std::isalnum(c); }), + name.end()); + + display_info_list_.push_back(DisplayInfo( + (void*)display_, name, true, crtc_info->x, crtc_info->y, + crtc_info->x + crtc_info->width, crtc_info->y + crtc_info->height)); XRRFreeCrtcInfo(crtc_info); } diff --git a/src/screen_capturer/macosx/screen_capturer_sck_impl.mm b/src/screen_capturer/macosx/screen_capturer_sck_impl.mm index 002ca71..0e59c3d 100644 --- a/src/screen_capturer/macosx/screen_capturer_sck_impl.mm +++ b/src/screen_capturer/macosx/screen_capturer_sck_impl.mm @@ -226,13 +226,17 @@ int ScreenCapturerSckImpl::Init(const int fps, cb_desktop_data cb) { CGRect bounds = CGDisplayBounds(display_id); bool is_primary = CGDisplayIsMain(display_id); - std::string name; - name = GetDisplayName(display_id); + std::string name = GetDisplayName(display_id); if (name.empty()) { - name = "Display " + std::to_string(unnamed_count++); + name = "Display" + std::to_string(unnamed_count++); } + // clean display name, remove non-alphanumeric characters + name.erase( + std::remove_if(name.begin(), name.end(), [](unsigned char c) { return !std::isalnum(c); }), + name.end()); + DisplayInfo info((void *)(uintptr_t)display_id, name, is_primary, static_cast(bounds.origin.x), static_cast(bounds.origin.y), static_cast(bounds.origin.x + bounds.size.width),