Browse Source

Add client method to send SetDesktopSize.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3711 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v0.0.90
Pierre Ossman 15 years ago
parent
commit
e7a41d5862
3 changed files with 34 additions and 0 deletions
  1. 4
    0
      common/rfb/CMsgWriter.h
  2. 28
    0
      common/rfb/CMsgWriterV3.cxx
  3. 2
    0
      common/rfb/CMsgWriterV3.h

+ 4
- 0
common/rfb/CMsgWriter.h View File

@@ -23,6 +23,7 @@
#define __RFB_CMSGWRITER_H__

#include <rfb/InputHandler.h>
#include <rfb/ScreenSet.h>

namespace rdr { class OutStream; }

@@ -41,6 +42,9 @@ namespace rfb {
virtual void startMsg(int type)=0;
virtual void endMsg()=0;

virtual void writeSetDesktopSize(int width, int height,
const ScreenSet& layout)=0;

// CMsgWriter implemented methods
virtual void writeSetPixelFormat(const PixelFormat& pf);
virtual void writeSetEncodings(int nEncodings, rdr::U32* encodings);

+ 28
- 0
common/rfb/CMsgWriterV3.cxx View File

@@ -47,3 +47,31 @@ void CMsgWriterV3::endMsg()
{
os->flush();
}

void CMsgWriterV3::writeSetDesktopSize(int width, int height,
const ScreenSet& layout)
{
if (!cp->supportsSetDesktopSize)
throw Exception("Server does not support SetDesktopSize");

startMsg(msgTypeSetDesktopSize);
os->pad(1);

os->writeU16(width);
os->writeU16(height);

os->writeU8(layout.num_screens());
os->pad(1);

ScreenSet::const_iterator iter;
for (iter = layout.begin();iter != layout.end();++iter) {
os->writeU32(iter->id);
os->writeU16(iter->dimensions.tl.x);
os->writeU16(iter->dimensions.tl.y);
os->writeU16(iter->dimensions.width());
os->writeU16(iter->dimensions.height());
os->writeU32(iter->flags);
}

endMsg();
}

+ 2
- 0
common/rfb/CMsgWriterV3.h View File

@@ -30,6 +30,8 @@ namespace rfb {
virtual void startMsg(int type);
virtual void endMsg();

virtual void writeSetDesktopSize(int width, int height,
const ScreenSet& layout);
};
}
#endif

Loading…
Cancel
Save