Browse Source

Make sure we always have a valid screen layout

Add more checks and fix some callers to make sure that the server
core always has a valid screen layout configured.
tags/v1.9.90
Pierre Ossman 5 years ago
parent
commit
c3826bb2fc
2 changed files with 14 additions and 6 deletions
  1. 9
    6
      common/rfb/VNCServerST.cxx
  2. 5
    0
      unix/x0vncserver/XDesktop.cxx

+ 9
- 6
common/rfb/VNCServerST.cxx View File

delete comparer; delete comparer;
comparer = 0; comparer = 0;


screenLayout = layout;

if (!pb) { if (!pb) {
screenLayout = ScreenSet(); screenLayout = ScreenSet();


return; return;
} }


if (!layout.validate(pb->width(), pb->height()))
throw Exception("setPixelBuffer: invalid screen layout");

screenLayout = layout;

// Assume the framebuffer contents wasn't saved and reset everything // Assume the framebuffer contents wasn't saved and reset everything
// that tracks its contents // that tracks its contents
comparer = new ComparingUpdateTracker(pb); comparer = new ComparingUpdateTracker(pb);
renderedCursorInvalid = true; renderedCursorInvalid = true;
add_changed(pb->getRect()); add_changed(pb->getRect());


// Make sure that we have at least one screen
if (screenLayout.num_screens() == 0)
screenLayout.add_screen(Screen(0, 0, 0, pb->width(), pb->height(), 0));

std::list<VNCSConnectionST*>::iterator ci, ci_next; std::list<VNCSConnectionST*>::iterator ci, ci_next;
for (ci=clients.begin();ci!=clients.end();ci=ci_next) { for (ci=clients.begin();ci!=clients.end();ci=ci_next) {
ci_next = ci; ci_next++; ci_next = ci; ci_next++;
} }
} }


// Make sure that we have at least one screen
if (layout.num_screens() == 0)
layout.add_screen(Screen(0, 0, 0, pb->width(), pb->height(), 0));

setPixelBuffer(pb_, layout); setPixelBuffer(pb_, layout);
} }



+ 5
- 0
unix/x0vncserver/XDesktop.cxx View File

} }
#endif #endif


// Make sure that we have at least one screen
if (layout.num_screens() == 0)
layout.add_screen(rfb::Screen(0, 0, 0, geometry->width(),
geometry->height(), 0));

return layout; return layout;
} }



Loading…
Cancel
Save