Mercurial > hg > Papers > 2015 > parusu-prosym
changeset 3:74034b769a12
Fix multi display
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 10 Nov 2015 03:31:16 +0900 |
parents | d964ad17d606 |
children | e1f5a313cadc |
files | paper/pic/shareScreenToMultiDisplay.graffle paper/pic/shareScreenToMultiDisplay.pdf paper/pic/shareScreenToMultiDisplay.xbb paper/prosym.tex |
diffstat | 4 files changed, 26 insertions(+), 36 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/pic/shareScreenToMultiDisplay.xbb Tue Nov 10 03:31:16 2015 +0900 @@ -0,0 +1,8 @@ +%%Title: shareScreenToMultiDisplay.pdf +%%Creator: extractbb 20150315 +%%BoundingBox: 0 0 815 849 +%%HiResBoundingBox: 0.000000 0.000000 815.000000 849.000000 +%%PDFVersion: 1.4 +%%Pages: 1 +%%CreationDate: Tue Nov 10 02:56:46 2015 +
--- a/paper/prosym.tex Tue Nov 10 02:10:48 2015 +0900 +++ b/paper/prosym.tex Tue Nov 10 03:31:16 2015 +0900 @@ -328,50 +328,32 @@ 表示される画面を常に画面にフィットする様にした。 \section{マルチディスプレイ対応} +画面配信側のPCがマルチディスプレイの場合、 +VNCServer からは複数の画面全体の画像データが送信されてしまう。 -画面配信側のPCがマルチディスプレイの場合、 -VNCServer からは複数の画面全体の画像データが送信され、 -図\ref{fig:multidisplay}の様に画面が配信される。 +授業やゼミ等でTreeVNCを使用する場合、複数画面の表示は必要ない。 +そこで、画面を共有する際、ディスプレイを選択させ、画面共有を行う機能を追加した。 + +マルチディスプレイを共有する際の処理を図\ref{fig:multidisplay} に示す。 + +ディスプレイの情報は個々のクライアントでしか取得ができない。 +なので、配信側は画面の切替を行う際に、ディスプレイを選択し、そのディスプレイの左上と右下の座標を取得する。 +その座標を root への画面切り替えを要求する SERVER\_CHANGE\_REQUEST message に付加させる。 + +root は 配信側の VNCServer に画像データを要求する FRAMEBUFFER\_UPDATE\_REPLY message に送信された座標を付加する。 + +VNCServer は要求された座標内の画像データを FRAMEBUFFER\_UPDATE message で root に送信する。 + +これにより、一画面のみの表示が可能となる。 \begin{figure}[h] \begin{center} - \includegraphics[width=70mm]{./pic/multidisplay.pdf} + \includegraphics[width=70mm]{./pic/shareScreenToMultiDisplay.pdf} \end{center} - \caption{マルチディスプレイの描画} + \caption{マルチディスプレイへの対応} \label{fig:multidisplay} \end{figure} -授業やゼミ等でTreeVNCを使用する場合、複数画面の表示は必要ない。 - -そこで、一画面のみをフィルタリングし表示するためのオプション機能(${\mathchar`-}$${\mathchar`-}$filterSingleDisplay)を追加した。 -オプションを追加した起動方法をソースコード\ref{filtersingledisplay}に記述する。 - -root はVNCServerから送られてくる全画面データから一画面のみをフィルタリングする必要がある。 -シングルディスプレイサイズは、個々のクライアントでしか取得できない。 -なので、配信側は画面の切り替えを行う際に、シングルディスプレイサイズを取得し、 -root へ送信する画面切り替えを要求する SERVER\_CHANGE\_REQUEST message に -シングルディスプレイサイズを付加する様にした。 - -root はメッセージを受け取り initData を変更する。 -initData は、RFB プロトコルで行われる通信中に VNCServer が送信するServerInit message から生成される。 -画像データが送られてくる前の段階で、これから送信されるデータの情報を取得し、描画の準備をする。 -ServerInit messageに含まれているデータは、 -配信先の画面サイズ、pixel format、配信先のPCの名前である。 - -マルチディスプレイの場合、VNCServerは数画面全体のサイズを送信する。 -そのまま initData を使用すると複数画面全体を描画することになる。 -それを避けるため、initData をシングルディスプレイサイズ用の originalInitData に生成し直す。 -図\ref{fig:initdata}の様に、root は接続されている node へ originalInitData を送信する。 - -\begin{figure}[h] - \begin{center} - \includegraphics[width=70mm]{./pic/sendInitData.pdf} - \end{center} - \caption{シングルディスプレイサイズ用の initData} - \label{fig:initdata} -\end{figure} - -これにより、一画面のみの表示が可能となる。 \section{無線LANへの対応}