]> source.dussan.org Git - tigervnc.git/commitdiff
Added throwing rfb::UnsupportedPixelFormatExceptions exception in ScaledDIBSectionBuf...
authorgeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Mon, 5 Nov 2007 17:13:10 +0000 (17:13 +0000)
committergeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Mon, 5 Nov 2007 17:13:10 +0000 (17:13 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2368 3789f03b-4d11-0410-bbf8-ca57d06f2519

win/rfb_win32/ScaledDIBSectionBuffer.cxx
win/vncviewer/DesktopWindow.cxx

index efa27a0b8ab26deb73449b85421b915deffec2d5..a3eb4fb3cf7e31489807e5fea7165e8f0b6345ec 100644 (file)
@@ -41,6 +41,7 @@ ScaledDIBSectionBuffer::~ScaledDIBSectionBuffer() {
 
 void ScaledDIBSectionBuffer::setScale(int scale_) {
   if (scale == scale_ || scale_ <= 0) return;
+  if (!(getPixelFormat().trueColour) && scale_ != 100) throw rfb::UnsupportedPixelFormatException();
   ScaledPixelBuffer::setScale(scale_);
   if (scale == 100) scaling = false;
   else scaling = true;
@@ -50,7 +51,7 @@ void ScaledDIBSectionBuffer::setScale(int scale_) {
 void ScaledDIBSectionBuffer::setPF(const PixelFormat &pf_) {
   if (memcmp(&(ScaledPixelBuffer::pf), &pf_, sizeof(pf_)) == 0) return;
 
-  if (!pf_.trueColour) throw rfb::UnsupportedPixelFormatException();
+  if (!pf_.trueColour && isScaling()) throw rfb::UnsupportedPixelFormatException();
 
   pf = pf_;
   if (scaling) {
index 75437070068db6824146f0ba9a0dd3944156b642..296be6627c39b940b9d9fc77cdbc0f86bf615460 100644 (file)
@@ -73,7 +73,7 @@ LRESULT CALLBACK DesktopWindowProc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lPa
   try {
     result = _this->processMessage(msg, wParam, lParam);
   } catch (rfb::UnsupportedPixelFormatException &e) {
-    MsgBox(0, e.str(), MB_OK);
+    MsgBox(0, e.str(), MB_OK | MB_ICONINFORMATION);
     _this->getCallback()->closeWindow();
   } catch (rdr::Exception& e) {
     vlog.error("untrapped: %s", e.str());