説明

画面共有システム、画面共有方法および画面共有プログラム

【課題】複数のコンピュータに接続された複数の表示装置に跨ってウィンドウアプリケーションを表示できる画面共有システムを提供する。
【解決手段】表示装置とコンピュータの組が、複数、ネットワークで接続されている画面共有システムにおいて、各コンピュータは、ルートウィンドウ管理テーブルと、トップウィンドウ管理テーブルと、画面共有制御部とを備え、1つのコンピュータの画面共有制御部は、このコンピュータが表示しようとするトップウィンドウのうち、このコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示される領域以外の部分の描画情報および座標情報を、他のコンピュータの画面共有制御部に送信し、他のコンピュータの画面共有制御部は、前記領域以外の部分の描画情報および座標情報を受信したら、この部分を、当該他のコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のコンピュータに接続された複数の表示装置に跨って一つのウィンドウアプリケーションを表示させる画面共有システム、画面共有方法および画面共有プログラムに関する。
【背景技術】
【0002】
Microsoft(登録商標) RemoteDesktop(以下、公知技術1と呼ぶ)やVNC(以下、公知技術2と呼ぶ)の場合、ルートウィンドウの画面データを転送することにより画面共有を実現する。公知技術1はMicrosoft(登録商標)が提供するWindows(登録商標)のオペレーティングシステム上でしか画面共有することができない。次に公知技術2だが、RFB(Remote Framebuffer)プロトコルをサポートするオペレーティングシステム上でしか画面共有することができない。また、RFBプロトコルをサポートするプログラムをWindows(登録商標)上に実装したとしても、ルートウィンドウの画面データを送受信するという機構のため、その画面データよりトップウィンドウと背景を区別することができない。したがってウィンドウアプリケーションを画面の切り替えなしに相互に表示することはできない。
【0003】
X Window System(以下、公知技術3と呼ぶ)の場合、Xプロトコルをサポートするオペレーティングシステム間でネットワーク透過的にGUIが利用可能である。しかし、Windows(登録商標)のウィンドウマネージャはXプロトコルをサポートしないため、異なるオペレーティングシステムのウィンドウアプリケーションを表示することができない。また、Xプロトコルはウィンドウアプリケーションを遠隔利用する目的で作られているため、複数のコンピュータに接続された表示装置に跨って一つのウィンドウアプリケーションを表示することはできない。
【0004】
公知技術2の技術に基づくMetaVNC(以下、公知技術4と呼ぶ)では、アプリケーションウィンドウ以外の背景領域を透過領域(透過ピクセルとも呼ぶ)として扱うことにより、異なるオペレーティングシステム間においても、ローカルのデスクトップのアプリケーションウィンドウと、リモートのデスクトップのアプリケーションウィンドウを一つの表示装置上に表示することができる。公知技術4は異なるオペレーティングシステムを含む複数のコンピュータ間で画面共有を行うことができるが、次の三つの課題がある。
【0005】
一つ目の課題は、VNCが用いるRFBプロトコルではXサーバがローカルデスクトップとリモートデスクトップの2つのXクライアントに対して同じ座標にてウィンドウアプリケーションを表示するために、物理的に並べられた表示装置を跨るようにウィンドウを表示できない。
【0006】
二つ目の課題は、公知技術4がフルスクリーンモードと透明な背景を用いたローカルデスクトップとリモートデスクトップの画面の合成であるため、ローカルデスクトップに表示されるウィンドウとリモートデスクトップに表示される個々のウィンドウを一つの深度レベル(Z-Order)で管理できない点である。つまり、リモートデスクトップのウィンドウの1つをマウスで選択するとリモートデスクトップのすべてのウィンドウがローカルデスクトップより前面に表示されることになる。また、透明な背景を用いた合成を行う実装上の理由により、Xサーバ側の背景に壁紙は使用できず単色の背景でなければならない。
【0007】
三つ目の課題は、ウィンドウごとに転送された画面データが管理されないため、ローカルデスクトップとリモートデスクトップを合成したアルファブレンディング表示が行えないことである。
【0008】
複数のコンピュータ(異なるオペレーティングシステムである場合を含む)に接続された複数の表示装置に跨って一つのウィンドウアプリケーションを表示することは、例えば仮想ディスプレイドライバを用いた画像転送を用いてデュアルディスプレイシステムにて実現可能である。しかし、複数のコンピュータ(異なるオペレーティングシステムである場合を含む)で動作する複数のウィンドウアプリケーションを複数の表示装置に跨って、画面の切り替えを行うことなく同時に表示して利用することはできない。
【0009】
異なるオペレーティングシステムを含む複数のコンピュータ間で、キーボードやマウスといったポインティングデバイスなどの入力装置を共有する技術としては、Win2VNC(以下、公知技術5と呼ぶ)やSynergy(以下、公知技術6と呼ぶ)などがある。これらの技術を用いて、異なるオペレーティングシステムを含む複数のコンピュータに接続された表示装置を物理的に並べて配置した場合、それらをひとそろいのキーボードやマウスといった入力装置で操作することができる。また、ポインティングデバイスが表示装置の右端にあたると、もう一方の表示装置の左端に現れるといった操作が可能である。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2007−164330号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明の目的は、複数のコンピュータ(異なるオペレーティングシステムである場合を含む)に接続された複数の表示装置に跨って一つのウィンドウアプリケーションを複数のコンピュータが相互に表示できる(以下、マルチコンピュータ・マルチディスプレイ環境と言う場合がある)画面共有システム、画面共有方法および画面共有プログラムを提供することである。
【課題を解決するための手段】
【0012】
本発明の利用環境として、物理的に並べて配置された複数の表示装置(ディスプレイ)および、それらに接続する複数のコンピュータ(異なるオペレーティングシステムである場合を含む)および、それらを操作する一つのポインティングデバイスとキーボードといった入力装置から構成される。本発明により、利用者は一つのコンピュータに複数の表示装置が接続された環境(マルチディスプレイ環境)を使う認識で複数のコンピュータを一つの統合されたディスプレイ空間(描画空間)として利用することができる。そのための仕組みとして、本発明は以下の画面共有方法を特徴として具備する。
【0013】
・複数のコンピュータに接続された表示装置を、連続した一つの座標空間および描画空間として扱うため、画面共有システムに参加するコンピュータのルートウィンドウ(表示装置に表示される画像領域の名称、デスクトップとも呼ばれる)の座標情報を管理し、ウィンドウアプリケーション(ルートウィンドウに対してトップウィンドウとも呼ばれる)の画像情報のうち、異なるコンピュータへ転送する一部の座標領域を判定アルゴリズムにより抽出し、その抽出された画像情報を管理し、その画像情報が描画されるべき座標を管理するためのデータ構造およびその固有の処理ステップを持つ。
【0014】
・各コンピュータのオペレーティングシステムには、ウィンドウマネージャやXサーバなどと呼ばれるプログラムが実装されている。このプログラムは、ウィンドウアプリケーションの生成、削除、描画、合成を管理して、表示装置に表示するルートウィンドウの画像データ(フレームバッファとも呼ばれる)を生成する。また、このプログラムが、ウィンドウアプリケーションの画像をルートウィンドウに合成する目的で、オフスクリーンバッファと呼ばれるメモリ領域に書き込みを行う。本発明では、このオフスクリーンバッファへの書き込みを行った時点で「画面共有制御部」というプログラムが画面共有の目的に応じて、オフスクリーンバッファをコピーし、異なるコンピュータの「画面共有制御部」に送信するという固有の処理ステップを持つ。
【0015】
・コピーされたオフスクリーンバッファのデータを受信したコンピュータの「画面共有制御部」は、ウィンドウマネージャやXサーバなどと呼ばれるプログラムに働きかけ、受信した部分的な画像を表示するためのウィンドウアプリケーションを生成して、送信元の要求により、画像の更新やウィンドウアプリケーションの削除といった状態管理を行うという固有の機構を持つ。
【0016】
本発明では、仮想ディスプレイドライバの上位にあたるウィンドウマネージャにより、ウィンドウアプリケーションの画像データが、メモリ上のオフスクリーンバッファに描画されたタイミングで、バッファ上のデータをコピーしてネットワークを経由して送信することにより、複数のコンピュータにそれぞれ接続された物理的に並べて配置された複数個の表示装置に跨って一つのウィンドウアプリケーションを表示することを特徴としている。
【0017】
あるウィンドウアプリケーションが、異なるコンピュータに接続される表示装置の画像の描画領域に重なる場合に、ウィンドウマネージャはメモリ上のオフスクリーンバッファに描画した画像データをコピーして、異なるコンピュータに転送する。その画像データを受信したプログラムは、そのコンピュータのウィンドウマネージャに画像表示用のウィンドウの生成を命令して、そのウィンドウ上に画像を表示する。物理的に並べて配置された異なるコンピュータに接続される複数個の表示装置上に、画像データが跨って表示される。また、転送された画像データは一つのウィンドウとしてリモートデスクトップで扱われるため、一つの深度レベル(Z-Order)にて管理が可能となる。また、個々のウィンドウについて転送された画像データに対するマスク画像が存在しうるため、アルファブレンディング表示も可能となる。
【発明の効果】
【0018】
第1の効果は、異なるコンピュータで動作する複数のウィンドウアプリケーションの操作について、画面を切り替えることなく物理的に並べて配置した複数の表示装置を一つの表示装置として画面を跨って利用できることである。
【0019】
その理由は、本発明が異なるコンピュータのウィンドウアプリケーションの物理的な並べて配置した表示装置を連続した描画空間として扱い、描画情報を相互に転送して他の表示装置と描画領域が重なる部分のウィンドウを表示できるためである。
【0020】
第2の効果は、異なるオペレーティングシステム間であってもウィンドウアプリケーションが動作するオペレーティングシステムが提供するウィンドウの見た目で操作できることである。
【0021】
その理由は、転送される描画情報は、ウィンドウの枠や枠に配置されているボタンも含めて描画情報として転送し、転送された側のリモートトップウィンドウはその描画情報を忠実に表示するだけのウィンドウであるため、表示装置を跨る境界線でウィンドウの枠のデザインが変わることはない。アルファブレンディングを用いるウィンドウについても、転送先がアルファブレンディングをサポートしていれば、同様の外観を再現することができる。
【0022】
第3の効果は、ネットワークの大域を消費しないため効率的であることである。
【0023】
その理由は、リモートデスクトップのように画面全体の描画情報を転送するのではなく、他の表示装置と描画領域が重なる部分の描画情報についてのみ転送するため、重なる部分がない場合、トラフィックが発生しない。また、重なる部分が小さい場合についても転送する情報量が少ないためネットワークの大域を消費しないため効率的である。
【図面の簡単な説明】
【0024】
【図1】本発明の第1の実施形態の構成を示す図である。
【図2】画面共有システムへの参加手順を示すフローチャートである。
【図3】管理テーブル119を示す図である。
【図4】コンピュータA,Bの物理的に配置された表示装置の描画を示す図である。
【図5】コンピュータA,Bの管理テーブルの例を示す図である。
【図6】コンピュータA,B,C,Dの物理的に配置された表示装置の描画を示す図である。
【図7】コンピュータA,B,C,Dの管理テーブルの例を示す図である。
【図8】描画領域の重なりの有無の判定方法と、その場合の転送対象領域を示す図である。
【図9】転送対象領域の取得フローを示す図である。
【図10】画面共有制御部の描画に関する送信処理フローである。
【図11】画面共有制御部の描画に関する受信処理フローである。
【発明を実施するための形態】
【0025】
次に、本発明の第1の実施形態の構成について図面を参照して詳細に説明する。図1を参照すると、本発明の第1の実施形態は、プログラム制御により動作するコンピュータA(中央処理装置;プロセッサ;データ処理装置)100と、コンピュータB(中央処理装置;プロセッサ;データ処理装置)200と、コンピュータA100に接続されている表示装置101および入力装置116と、コンピュータB200に接続されている表示装置201および入力装置216とを備えている。
【0026】
コンピュータA100は、ディスプレイドライバ102と、ルートウィンドウバッファ104と、ウィンドウマネージャ105と、オフスクリーンバッファ107と、コンピュータBにとってのリモートトップウィンドウ110のためのオフスクリーンバッファ111と、オフスクリーンバッファブローカ112と、入力装置ブローカ113と、ネットワークインタフェース114と、入力装置ドライバ115と、仮想入力装置ドライバ117と、画面共有制御部118と、管理テーブル119とを備えている。ウィンドウマネージャ105は、ルートウィンドウ103と、トップウィンドウ106と、コンピュータBにとってのリモートトップウィンドウ110とを管理する。オフスクリーンバッファ107には、描画情報a108および描画情報b109が格納されている。オフスクリーンバッファ111には、描画情報c208が格納されている。
【0027】
コンピュータB200は、ディスプレイドライバ202と、ルートウィンドウバッファ204と、ウィンドウマネージャ205と、オフスクリーンバッファ207と、コンピュータAにとってのリモートトップウィンドウ210のためのオフスクリーンバッファ211と、オフスクリーンバッファブローカ212と、入力装置ブローカ213と、ネットワークインタフェース214と、入力装置ドライバ215と、仮想入力装置ドライバ217と、画面共有制御部218と、管理テーブル219とを備えている。ウィンドウマネージャ205は、ルートウィンドウ203と、トップウィンドウ206と、コンピュータAにとってのリモートトップウィンドウ210とを管理する。オフスクリーンバッファ207には、描画情報c208および描画情報d209が格納されている。オフスクリーンバッファ211には、描画情報b109が格納されている。
【0028】
コンピュータA100のネットワークインタフェース114と、コンピュータB200のネットワークインタフェース214とは、ネットワークで接続されている。
【0029】
これらの手段はそれぞれ概略つぎのように動作する。まず、コンピュータA100の画像出力手段としては、コンピュータA100上で動作するトップウィンドウ106がウィンドウマネージャ105の機能の呼び出しにより新規に生成、もしくは再描画され、その描画情報がオフスクリーンバッファ107に記録される。オフスクリーンバッファブローカ112は記録された描画情報をコンピュータA100の表示装置101に表示する描画情報a108と、コンピュータB200の表示装置201に表示する描画情報b109に分ける。オフスクリーンバッファブローカ112は描画情報b109をコンピュータB200のオフスクリーンバッファブローカ212にネットワークインタフェース114と、ネットワークインタフェース214とを経由して転送する。また、オフスクリーンバッファブローカ112はコンピュータB200から転送された描画情報c208の管理をウィンドウマネージャ105に命令する。ウィンドウマネージャ105は、リモートトップウィンドウ110を、新規に生成もしくは再描画するために、オフスクリーンバッファ111に描画情報c208を保持する。コンピュータA100の表示装置101に表示する際に、描画情報a108および描画情報c208を、ルートウィンドウ103を管理するルートウィンドウバッファ104に書き込み、描画情報を合成して、ディスプレイドライバ102への描画命令にて表示装置101に描画する。
【0030】
コンピュータA100の入力手段としては、マウスなどのポインティングデバイスからの操作イベントやキーボードからの操作イベントを入力装置116が保持し、入力装置ドライバ115に伝達する。入力装置116はコンピュータA100とコンピュータB101で共有されるため、ポインティングデバイスの座標にしたがって入力装置ブローカ113が動作する。
【0031】
コンピュータA100のネットワーク通信手段としては、描画情報b109をコンピュータB200のリモートトップウィンドウ210のオフスクリーンバッファ211に転送したり、入力装置ドライバ115の操作イベントをコンピュータB200の仮想入力装置ドライバ215に転送したりする。ネットワーク通信はLocal Area NetworkでのTCP/IP通信など既存技術を用いて行う。
【0032】
次に、第1の実施形態の動作を詳細に説明する。まず、本発明の実施結果のイメージを図4に示す。コンピュータAに表示装置101が接続され、コンピュータBに表示装置201が接続されている環境にて、コンピュータAの1つのアプリケーションの画像がトップウィンドウ106とリモートトップウィンドウ210に分割され、2つの表示装置を跨るように表示されている。また、コンピュータBの1つのアプリケーションの画像がトップウィンドウ206とリモートトップウィンドウ110に分かれ、2つの表示装置を跨るように表示されている。
【0033】
次に、図3を参照して本発明の画面共有システムに参加しているコンピュータの情報を管理するためのルートウィンドウ管理テーブル500について説明する。ルートウィンドウ管理テーブル500は、画面共有システムに所属しているルートウィンドウIDの一覧と、どのルートウィンドウがローカルのコンピュータのものであるかを示す情報と、ルートウィンドウのグローバル座標とから構成されている。ルートウィンドウのグローバル座標は、画面共有システムを構成する際の最初のコンピュータのルートウィンドウの左上の座標を原点(0,0)として、追加されたコンピュータの表示装置の物理的な配置に一致するように、表示装置の画面解像度分以上の距離をおいて、追加されたコンピュータのルートウィンドウのグローバル座標が設定される。物理的な配置の定義は、画面共有システムを利用するユーザが行う。
【0034】
図5のmのルートウィンドウ管理テーブルの例R500、R501が示すように、左にm、右にmといった表示装置の配置をユーザが定義した場合に、すべての表示装置の解像度が1280×1024だとすると、それぞれR500やR501の第3列に記載されたルートウィンドウのグローバル座標となる。
【0035】
次に、コンピュータA100とコンピュータB200が画面共有システムを構成する場合の画面共有システムへの参加手順を図2のフローチャートを用いて説明する。ここでは、ユーザがコンピュータA100を操作して手続きを行う場合を例に説明する。まず、コンピュータA100の画面共有制御部118は、ネットワークインタフェース114、214を経由してルートウィンドウ管理テーブル500の有無をコンピュータB200の画面共有制御部218に問い合わせ、結果を取得し、その結果をコンピュータAの画面共有制御部118が持つルートウィンドウ管理テーブル500の有無の情報と照合する(ステップS400)。そして、その結果として、4つの処理フローに分岐する。
【0036】
1つ目の処理フローとして、コンピュータA100にルートウィンドウ管理テーブル500が既にある場合、コンピュータA100のルートウィンドウ管理テーブル500にコンピュータB200のレコードを追加する(ステップS401)。次に、コンピュータAのルートウィンドウ管理テーブル500をネットワークインタフェース114と214を経由してコンピュータBに複製する(ステップS402)。コンピュータAのルートウィンドウ管理テーブル500にその他のコンピュータのレコードがもしある場合、ネットワークインタフェース114を用いてコンピュータB200のレコードの追加を通知する(ステップS403)。
【0037】
2つ目の処理フローとして、コンピュータB200にルートウィンドウ管理テーブル500が既にある場合、コンピュータB200のルートウィンドウ管理テーブル500にコンピュータA100のレコードを追加する(ステップS404)。次に、コンピュータBのルートウィンドウ管理テーブル500をネットワークインタフェース214と114を経由してコンピュータAに複製する(ステップS405)。コンピュータBのルートウィンドウ管理テーブル500にその他のコンピュータのレコードがもしある場合、ネットワークインタフェース214を用いてコンピュータAのレコードの追加を通知する(ステップS406)。
【0038】
3つ目の処理フローとして、コンピュータA100とコンピュータB200にルートウィンドウ管理テーブル500がある場合、画面共有制御部118と218間の通信により2つのルートウィンドウ管理テーブル500のレコード情報をマージする(ステップS407)。次に、コンピュータA100はマージした結果をコンピュータA100とコンピュータB200のルートウィンドウ管理テーブル500に登録されているその他のコンピュータにネットワークインタフェースを介して通知を行う(ステップS408)。
【0039】
4つ目の処理フローとして、コンピュータA100にもコンピュータB200にもルートウィンドウ管理テーブル500がない場合、画面共有制御部118と218は、それぞれルートウィンドウ管理テーブル500を新規に作成し、コンピュータA100とコンピュータB200のレコードを追加する(ステップS409)。
【0040】
4つの分岐した処理フローのうち該当するものが完了すると、画面共有制御部118はユーザに対して、マウスなどのポインティングデバイスやキーボードといった入力装置116の制御先のコンピュータの指定を要求する(ステップS410)。ルートウィンドウ管理テーブル500にレコードとして登録されている任意の台数のコンピュータが指定対象になるが、ここでは、コンピュータA100とコンピュータB200と他のコンピュータCのそれぞれが指定された3つに分岐した処理フローについて説明する。
【0041】
まず、コンピュータA100を制御先と指定した場合、入力装置116から入力された信号は入力装置ドライバ115によって、そのままコンピュータA100を操作することができる。コンピュータA以外の入力装置、例えばコンピュータB200の入力装置216から入力があった場合、入力された信号は、入力装置ドライバ215が受け取るが、入力装置ブローカ213によって、ネットワークインタフェース214、114を介して入力装置ブローカ113に転送され、コンピュータA100の仮想入力装置ドライバ117からコンピュータA100への入力として処理される(ステップS411)。
【0042】
2つ目の処理フローとして、コンピュータBを制御先として指定した場合、入力装置216から入力された信号は、入力装置ドライバ215によって、そのままコンピュータB200を操作することができる。コンピュータB以外の入力装置、例えばコンピュータA100の入力装置116から入力があった場合、入力された信号は、入力装置ドライバ115が受け取るが、入力装置ブローカ113によって、ネットワークインタフェース114、214を介して入力装置ブローカ213に転送され、コンピュータB200の仮想入力装置ドライバ217からコンピュータB200への入力として処理される(ステップS412)。
【0043】
3つ目の処理フローとして、ルートウィンドウ管理テーブル500に登録されている他コンピュータCを制御先と指定した場合も、同様にコンピュータCの入力装置でコンピュータCの操作ができ、入力装置116や216から入力があった場合は、最終的にコンピュータCの仮想入力装置ドライバに転送されてコンピュータCを操作できる(ステップS413)。以上で、画面共有システムへの参加が完了する。
【0044】
次に、図3に示したコンピュータm上で動作するウィンドウアプリケーションである個々のトップウィンドウを管理するテーブル、mのトップウィンドウ管理テーブル501について説明する。トップウィンドウ管理テーブル501は、トップウィンドウIDと、トップウィンドウのグローバル座標と、描画情報の転送先のルートウィンドウIDから構成されている。トップウィンドウIDは、ルートウィンドウIDとウィンドウIDの連結された情報にて一意に識別することができる情報を使用する。描画情報の転送先のルートウィンドウIDは、そのm上で動作するトップウィンドウがm以外のコンピュータに接続された表示装置の描画領域に重なる場合に、そのコンピュータのルートウィンドウIDを記録する列である。
【0045】
例えば、図5のmのトップウィンドウ管理テーブルの例R502のようにトップウィンドウm−ID1が2つの表示装置上に、第2列に記載されたグローバル座標のように配置された場合、第3列のような描画情報転送先のルートウィンドウIDが図10のステップS713、S714、S715、S716、S717で特定され、トップウィンドウ管理テーブルの第3列に記録される(図10のS718)。具体的には、S713にて、ルートウィンドウIDがmの場合、自マシン(自分自身のコンピュータ)ではないため、処理がS714に移り、b(x)≧A(x)は、1399≧0で真となり、S715では、a(x)≦B(x)は、600≦1279で真となり、S716では、b(y)≧A(y)は、499≧0で真となり、S717では、a(y)≦B(y)は、600≦1023で真となり、処理がS718に移り、ルートウィンドウIDmが描画情報転送先のルートウィンドウIDとしてレコードに記述される。
【0046】
次に、図3に示したmのトップウィンドウ管理テーブル501のレコードの描画情報転送先のルートウィンドウIDが存在する場合に、そのトップウィンドウの描画情報の転送対象領域を管理するmの描画情報転送対象領域の管理テーブル502について説明する。描画情報転送対象領域の管理テーブル502は、第1列のトップウィンドウIDと、第2列の描画情報転送先のルートウィンドウIDの組み合わせをキーとして一意に識別されるレコードから成る。そのキーによって管理される情報として、描画情報転送対象領域のグローバル座標であるp(x,y)とq(x,y)のデータが管理される。
【0047】
例えば、図5のmの描画情報転送対象領域の管理テーブルの例R504のように、トップウィンドウm−ID1の情報からR502に記録されたa01(x,y)とb01(x,y)のデータを取得し、描画情報転送先のルートウィンドウIDmの情報からR500に記録されたA(x,y),B(x,y)のデータを取得し、図9のS600からS611のフロー処理より、p(x,y)とq(x,y)のデータを取得し、管理テーブルR504にレコードとして記録する。具体的には、図9のS600では、a01(x)<A(x)は、600<1280で真となり、S601にて、p(x)=1280となる。S603では、a01(y)<A(y)は、100>0で偽となり、S605にてp(y)=100となる。S606では、b01(x)<B(x)は、1399<2599で真となり、S607にて、q(x)=1399となる。S609では、b01(y)<B(y)は、499<1023で真となり、S610にてq(y)=499となる。なお、図9の処理は、図8に示したルートウィンドウのグローバル座標とトップウィンドウのグローバル座標の大小関係による重なり方の分類に従って転送対象領域を抽出し、それをp(x,y)とq(x,y)に代入する処理をフロー化したものである。
【0048】
次に、図10に示した画面共有制御部の描画に関する処理フロー(送信処理)について説明する。共有画面システムに参加したコンピュータの画面共有制御部(図1の118や218)は、コンピュータm上で動作するウィンドウアプリケーションである個々のトップウィンドウからのウィンドウマネージャ(図1の105や205)に送られる4つのイベント(トップウィンドウの再描画S700、トップウィンドウの生成と描画S708、トップウィンドウのリサイズと描画S710、トップウィンドウの消滅S722)を関数のラッパー処理、呼び出し関数のオーバーライドなどによりウィンドウアプリケーションとウィンドウマネージャの処理の間に入り、そのイベントの発生を契機に処理を開始する。
【0049】
まず、トップウィンドウの生成と描画S708のイベントが発生した場合、トップウィンドウのIDを生成し、オフスクリーンバッファを生成して、ウィンドウアプリケーションの描画情報を格納する(S709)。S712にてルートウィンドウのカウンタiを0にセットし、S713にて、図3にて示したmのルートウィンドウ管理テーブル500を参照して、ルートウィンドウIDがmであるレコードのローカルコンピュータの列のデータを確認して自マシンである場合(データが○である場合)は、S713の結果を偽として、iをカウントアップし、S713を再度判定する。(フロー図からは省略したが、iがiの最大値を超えてルートウィンドウ管理テーブルに該当するレコードがなくなった場合、描画対象領域なしとしてフロー処理は終了する。)ローカルコンピュータの列のデータを確認して自マシンでない場合(データが−である場合)は、S713の結果を真として、S714からS717の比較を実施し、全て真であれば、S718を実施し、一つでも偽があれば、ルートウィンドウmに対する描画転送対象領域はないと判定して、S726の判定にてリサイズのイベントではないため、S721の判定に処理が移動し、iをカウントアップし、m>mmaxの場合(mが存在しない場合)にフローは終了し、mが存在する場合は、S713からカウントアップされたiのルートウィンドウmについて処理を行う。S718では、既に説明したようにmのトップウィンドウ管理テーブル(図3の501)の描画情報転送先のルートウィンドウIDにmを記録し、S719にて図9の転送対象領域のグローバル座標p、qを取得し、mの描画情報転送対象領域の管理テーブル(図3の502)に記録する。次に、S720にて、管理テーブルより描画対象領域のp、qの座標値を取得し、トップウィンドウのaijのグローバル座標値より、p、qのグローバル座標値をS709やS711で生成したオフスクリーンバッファ上のローカル座標に変換して示される領域の描画情報(RGB情報、必要に応じてアルファブレンディングのマスク情報を含む)を取得してトップウィンドウIDとともにmの画面共有制御部に送信する。S721にてiをカウントアップし、m>mmaxの場合(mが存在しない場合)にフローは終了し、mが存在する場合は、S713か
らカウントアップされたiのルートウィンドウmについて処理を行う。
【0050】
トップウィンドウのリサイズと描画S710のイベントが発生した場合、S711にて、トップウィンドウのIDを取得し、オフスクリーンバッファを生成して、ウィンドウアプリケーションの描画情報を格納する。トップウィンドウの生成と描画S708のイベントが発生した場合と同様に、S713からS717の判定により、描画転送対象領域があるか、ないかを判定する。描画転送対象領域がある場合は、既に説明したように描画情報転送先のルートウィンドウIDにmを管理テーブル501に記録する。ただし、リサイズ処理のため既に描画情報転送先のルートウィンドウIDmが該当レコード行に存在する場合は何もしない。S719にて転送対象領域を取得し、mの描画情報転送対象領域の管理テーブル502に記載する。ただし、リサイズ処理のため既に描画情報転送対象領域のグローバル座標のレコード行が存在する場合、p(x)、p(y)、q(x)、q(y)の座標データを更新する。S720、S721については、トップウィンドウの生成と描画S708と全く同様に処理する。S714からS717の処理にて、偽の判定があった場合は、描画転送対象領域がないので、S726にてトップウィンドウのリサイズと描画の処理中の場合は、S727にて、リモートのコンピュータmへの描画対象領域の情報がリストにあるかをトップウィンドウ管理テーブル501の処理中のトップウィンドウIDについて確認する。ある場合は、S728にて領域のリモートトップウィンドウの削除依頼をウィンドウIDとともに、mに送信する。そして、S729にてトップウィンドウIDと描画情報転送先のルートウィンドウIDに関連するレコード行を502から削除し、トップウィンドウ管理テーブル501から、トップウィンドウIDに関連する第3列の描画情報転送先のルートウィンドウIDの該当するルートウィンドウIDのデータを削除する。その後のS721については、トップウィンドウの生成と描画S708が発生した場合と同じである。
【0051】
トップウィンドウの消滅S722のイベントが発生した場合、S723にて消滅するトップウィンドウのIDを取得する。S724にてルートウィンドウのカウンタiを0にセットし、S725にて、図3にて示したmのルートウィンドウ管理テーブル500を参照して、ルートウィンドウIDがmであるレコードのローカルコンピュータの列のデータを確認して自マシンである場合(データが○である場合)は、S725の結果を偽として、iをカウントアップし、S725を再度判定する。(フロー図からは省略したが、iがiの最大値を超えてルートウィンドウ管理テーブルに該当するレコードがなくなった場合、描画対象領域なしとしてフロー処理は終了する。)ローカルコンピュータの列のデータを確認して自マシンでない場合(データが−である場合)は、S725の結果を真とする。既に説明したS727、S728、S729の処理を行い、S721にて、iをカウントアップし、m>mmaxの場合(mが存在しない場合)にフローは終了し、mが存在する場合は、S725からカウントアップされたiのルートウィンドウmについて処理を行う。
【0052】
トップウィンドウの再描画S700のイベントが発生した場合、S701にて再描画するトップウィンドウのIDを取得し、オフスクリーンバッファを生成して、ウィンドウアプリケーションの描画情報を格納する。S702にてルートウィンドウのカウンタiを0にセットし、S703にて、図3にて示したmのルートウィンドウ管理テーブル500を参照して、ルートウィンドウIDがmであるレコードのローカルコンピュータの列のデータを確認して自マシンである場合(データが○である場合)は、S703の結果を偽として、iをカウントアップし、S703を再度判定する。(フロー図からは省略したが、iがiの最大値を超えてルートウィンドウ管理テーブルに該当するレコードがなくなった場合、描画対象領域なしとしてフロー処理は終了する。)ローカルコンピュータの列のデータを確認して自マシンでない場合(データが−である場合)は、S703の結果を真とする。S704にて、リモートのコンピュータmへの描画対象領域の情報がリストにあるかをトップウィンドウ管理テーブル501の処理中のトップウィンドウIDについて確認する。ある場合は、S705にて、管理テーブルより描画対象領域のp、qの座標値を取得し、トップウィンドウのaijのグローバル座標値より、p、qのグローバル座標値をS701で生成したオフスクリーンバッファ上のローカル座標に変換して示される領域の描画情報(RGB情報、必要に応じてアルファブレンディングのマスク情報を含む)を取得する。S706にて、描画対象領域の描画情報を、ウィンドウIDとともに、mに送信する。S707にてiをカウントアップし、m>mmaxの場合(mが存在しない場合)にフローは終了し、mが存在する場合は、S703からカウントアップされたiのルートウィンドウmについて処理を行う。
【0053】
次に、図11に示した画面共有制御部の描画に関する処理フロー(受信処理)について説明する。共有画面システムに参加したコンピュータの画面共有制御部(図1の118や218)は、mをルートウィンドウに持つコンピュータから図10で示した処理によりリモートトップウィンドウの生成や削除、リサイズや再描画の依頼を送信する。その依頼を受信したmをルートウィンドウに持つコンピュータは、図3のリモートトップウィンドウの描画対象領域の管理テーブル503にて、リモートトップウィンドウの管理を行う。
【0054】
トップウィンドウID(m−ID)と描画情報を受信した場合(S900)、S901にて、トップウィンドウの描画対象領域の管理テーブル503の第1列にてm−IDに一致するレコードが存在するかを確認する。存在する場合、S902にて受信データにp、qの座標値があるかを確認する。p、qの座標値がある場合、リモートトップウィンドウのリサイズと再描画の依頼であることがわかるので、S903にてリモートトップウィンドウの描画対象領域の管理テーブル503のレコードのp、qの座標値を更新する。そして、S904にて、m−IDに一致するレコードに記録されているmのトップウィンドウID(ID)を指定して、受信した描画情報(RGB情報、必要に応じてアルファブレンディングマスク情報)でリモートトップウィンドウのリサイズと再描画をウィンドウマネージャに命令して処理フローを完了する。S902にてp、qの座標値がない場合、リモートトップウィンドウの再描画の依頼であることがわかるので、S905にて、m−IDに一致するレコードに記録されているmのトップウィンドウID(ID)を指定して、受信した描画情報(RGB情報、必要に応じてアルファブレンディングマスク情報)でリモートトップウィンドウの再描画をウィンドウマネージャに命令して処理フローを完了する。S901の判定にて、m−IDに一致するレコードが存在しなかった場合、リモートトップウィンドウの生成の依頼であることがわかるので、S906にてリモートトップウィンドウの描画対象領域の管理テーブル503にレコードを追加し、S907にて、受信したp、qの座標値と描画情報でリモートトップウィンドウの生成をウィンドウマネージャに命令する。そして、S908にて生成されたmのトップウィンドウID(ID)をウィンドウマネージャから取得して、レコードに記録して処理フローを完了する。
【0055】
一方、リモートトップウィンドウの削除依頼をトップウィンドウID(m−ID)とともに受信した場合(S909)、S910にてトップウィンドウID(ID)を指定して、リモートトップウィンドウの削除をウィンドウマネージャに命令する。そしてS911にてリモートトップウィンドウの描画対象領域の管理テーブル503からトップウィンドウID(m−ID)に一致するレコード行を削除して処理フローを完了する。
【0056】
次に、本発明の第1の実施形態の効果について説明する。本発明の第1の実施形態では、画面共有制御部が画面共有システムに参加するコンピュータに導入されており、グローバル座標を共有できるので、異なるコンピュータに接続される表示装置の画像の描画領域に重なる場合に、オフスクリーンバッファに描画された画像データをコピーして、異なるコンピュータに転送することができる。
【0057】
また、本発明の第1の実施形態では、さらに、送信するRGBの描画情報の他に、アルファブレンディングのマスク画像を送信することで、アルファブレンディングを用いたトップウィンドウとリモートトップウィンドウの画像の合成が可能である。
【0058】
また、本発明の第1の実施形態では、さらに、転送された画像データは一つのウィンドウとしてリモートデスクトップで扱われるため、マウスによるウィンドウの選択で再描画されたフラグを送信データに含めることで、一つの深度レベル(Z-Order)にて管理が可能となる。
【0059】
本発明の他の実施形態を図6および図7に示す。図6および図7は、4つの表示装置を物理的に並べて配置した場合の表示装置上のトップウィンドウの表示イメージと、ルートウィンドウmを持つコンピュータの管理テーブルの例を示したものである。
【産業上の利用可能性】
【0060】
本発明によれば、複数のコンピュータサーバ上でそれぞれ動作するウィンドウアプリケーションの統合管理や統合監視する装置といった用途に適用できる。また、リモートデスクトップ機能の代替機能といった用途や、複数のコンピュータを所有するユーザのデュアルディスプレイ機能の代替機能といった用途にも適用可能である。
【符号の説明】
【0061】
100 コンピュータA
200 コンピュータB
102、202 ディスプレイドライバ
104、204 ルートウィンドウバッファ
105、205 ウィンドウマネージャ
107、207、111、211 オフスクリーンバッファ
112、212 オフスクリーンバッファブローカ
113、213 入力装置ブローカ
114、214 ネットワークインタフェース
115、215 入力装置ドライバ
117、217 仮想入力装置ドライバ
118、218 画面共有制御部
119、219 管理テーブル
103、203 ルートウィンドウ
106、206 トップウィンドウ
110、210 リモートトップウィンドウ
108 描画情報a
109 描画情報b
208 描画情報c
209 描画情報d

【特許請求の範囲】
【請求項1】
表示装置とコンピュータの組が、複数、ネットワークで接続されている画面共有システムにおいて、
各コンピュータは、
各コンピュータと組になっている表示装置に表示されるルートウィンドウの座標情報を管理するルートウィンドウ管理テーブルと、
複数の表示装置に表示される複数のルートウィンドウ上に跨って表示されるトップウィンドウの座標情報を管理するトップウィンドウ管理テーブルと、
画面共有制御部とを備えていて、
1つのコンピュータの画面共有制御部は、このコンピュータが表示しようとするトップウィンドウのうち、このコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示される領域以外の部分の描画情報および座標情報を、他のコンピュータの画面共有制御部に送信し、
当該他のコンピュータの画面共有制御部は、前記領域以外の部分の描画情報および座標情報を受信したら、この部分を、当該他のコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示する
ことを特徴とする画面共有システム。
【請求項2】
表示装置とコンピュータの組が、複数、ネットワークで接続された状態で複数のコンピュータが画面を共有するための方法において、
各コンピュータは、
各コンピュータと組になっている表示装置に表示されるルートウィンドウの座標情報を管理し、
複数の表示装置に表示される複数のルートウィンドウ上に跨って表示されるトップウィンドウの座標情報を管理し、
1つのコンピュータは、このコンピュータが表示しようとするトップウィンドウのうち、このコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示される領域以外の部分の描画情報および座標情報を、他のコンピュータに送信し、
当該他のコンピュータは、前記領域以外の部分の描画情報および座標情報を受信したら、この部分を、当該他のコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示する
ことを特徴とする画面共有方法。
【請求項3】
表示装置とコンピュータの組が、複数、ネットワークで接続された状態で複数のコンピュータが画面を共有するためのプログラムにおいて、
各コンピュータが、各コンピュータと組になっている表示装置に表示されるルートウィンドウの座標情報を管理するステップと、
各コンピュータが、複数の表示装置に表示される複数のルートウィンドウ上に跨って表示されるトップウィンドウの座標情報を管理するステップと、
1つのコンピュータが、このコンピュータが表示しようとするトップウィンドウのうち、このコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示される領域以外の部分の描画情報および座標情報を、他のコンピュータに送信するステップと、
当該他のコンピュータが、前記領域以外の部分の描画情報および座標情報を受信したら、この部分を、当該他のコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示するステップと
を各コンピュータに実行させることを特徴とする画面共有プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2010−244124(P2010−244124A)
【公開日】平成22年10月28日(2010.10.28)
【国際特許分類】
【出願番号】特願2009−89161(P2009−89161)
【出願日】平成21年4月1日(2009.4.1)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】