Browse Source

Implement carla_get_desktop_scale_factor for X11

Signed-off-by: falkTX <falktx@falktx.com>
tags/v2.4.0
falkTX 3 years ago
parent
commit
797c728010
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
1 changed files with 27 additions and 1 deletions
  1. +27
    -1
      source/backend/utils/Windows.cpp

+ 27
- 1
source/backend/utils/Windows.cpp View File

@@ -17,7 +17,7 @@

#include "CarlaUtils.h"

#include "CarlaUtils.hpp"
#include "CarlaMathUtils.hpp"

#if defined(CARLA_OS_MAC) && !defined(CARLA_PLUGIN_EXPORT)
# import <Cocoa/Cocoa.h>
@@ -25,6 +25,7 @@

#ifdef HAVE_X11
# include <X11/Xlib.h>
# include <X11/Xresource.h>
#endif

namespace CB = CarlaBackend;
@@ -43,6 +44,31 @@ double carla_get_desktop_scale_factor()
#if defined(CARLA_OS_MAC) && !defined(CARLA_PLUGIN_EXPORT)
return [NSScreen mainScreen].backingScaleFactor;
#endif
#ifdef HAVE_X11
if (::Display* const display = XOpenDisplay(nullptr))
{
XrmInitialize();
if (char* const rms = XResourceManagerString(display))
{
if (const XrmDatabase sdb = XrmGetStringDatabase(rms))
{
char* type = nullptr;
XrmValue ret;

if (XrmGetResource(sdb, "Xft.dpi", "String", &type, &ret)
&& ret.addr != nullptr
&& type != nullptr
&& std::strncmp("String", type, 6) == 0)
{
const double dpi = std::atof(ret.addr);
if (carla_isNotZero(dpi))
return dpi / 96;
}
}
}
XCloseDisplay(display);
}
#endif

return 1.0;
}


Loading…
Cancel
Save