|
|
@@ -422,6 +422,7 @@ void XDesktop::clientCutText(const char* str) { |
|
|
|
ScreenSet XDesktop::computeScreenLayout() |
|
|
|
{ |
|
|
|
ScreenSet layout; |
|
|
|
char buffer[2048]; |
|
|
|
|
|
|
|
#ifdef HAVE_XRANDR |
|
|
|
XRRScreenResources *res = XRRGetScreenResources(dpy, DefaultRootWindow(dpy)); |
|
|
@@ -439,13 +440,11 @@ ScreenSet XDesktop::computeScreenLayout() |
|
|
|
Point offset(-geometry->offsetLeft(), -geometry->offsetTop()); |
|
|
|
for (iter = layout.begin();iter != layout.end();iter = iter_next) { |
|
|
|
iter_next = iter; ++iter_next; |
|
|
|
iter->dimensions = iter->dimensions.translate(offset); |
|
|
|
if (iter->dimensions.enclosed_by(geometry->getRect())) |
|
|
|
continue; |
|
|
|
iter->dimensions = iter->dimensions.intersect(geometry->getRect()); |
|
|
|
if (iter->dimensions.is_empty()) { |
|
|
|
if (iter->dimensions.is_empty()) |
|
|
|
layout.remove_screen(iter->id); |
|
|
|
} |
|
|
|
else |
|
|
|
iter->dimensions = iter->dimensions.translate(offset); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
@@ -454,6 +453,10 @@ ScreenSet XDesktop::computeScreenLayout() |
|
|
|
layout.add_screen(rfb::Screen(0, 0, 0, geometry->width(), |
|
|
|
geometry->height(), 0)); |
|
|
|
|
|
|
|
vlog.debug("Detected screen layout:"); |
|
|
|
layout.print(buffer, sizeof(buffer)); |
|
|
|
vlog.debug("%s", buffer); |
|
|
|
|
|
|
|
return layout; |
|
|
|
} |
|
|
|
|