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
Binary file paper/pic/shareScreenToMultiDisplay.graffle has changed
Binary file paper/pic/shareScreenToMultiDisplay.pdf has changed
--- /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への対応}