(57)【要約】【課題】複数のコンピュータに接続された複数の表示装置に跨ってウィンドウアプリケーションを表示できる画面共有システムを提供する。【解決手段】表示装置とコンピュータの組が、複数、ネットワークで接続されている画面共有システムにおいて、各コンピュータは、ルートウィンドウ管理テーブルと、トップウィンドウ管理テーブルと、画面共有制御部とを備え、１つのコンピュータの画面共有制御部は、このコンピュータが表示しようとするトップウィンドウのうち、このコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示される領域以外の部分の描画情報および座標情報を、他のコンピュータの画面共有制御部に送信し、他のコンピュータの画面共有制御部は、前記領域以外の部分の描画情報および座標情報を受信したら、この部分を、当該他のコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示する。【選択図】図１
2010244124.tif 000002
【特許請求の範囲】
【請求項１】
表示装置とコンピュータの組が、複数、ネットワークで接続されている画面共有システムにおいて、
各コンピュータは、
各コンピュータと組になっている表示装置に表示されるルートウィンドウの座標情報を管理するルートウィンドウ管理テーブルと、
複数の表示装置に表示される複数のルートウィンドウ上に跨って表示されるトップウィンドウの座標情報を管理するトップウィンドウ管理テーブルと、
画面共有制御部とを備えていて、
１つのコンピュータの画面共有制御部は、このコンピュータが表示しようとするトップウィンドウのうち、このコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示される領域以外の部分の描画情報および座標情報を、他のコンピュータの画面共有制御部に送信し、
当該他のコンピュータの画面共有制御部は、前記領域以外の部分の描画情報および座標情報を受信したら、この部分を、当該他のコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示する
ことを特徴とする画面共有システム。
【請求項２】
表示装置とコンピュータの組が、複数、ネットワークで接続された状態で複数のコンピュータが画面を共有するための方法において、
各コンピュータは、
各コンピュータと組になっている表示装置に表示されるルートウィンドウの座標情報を管理し、
複数の表示装置に表示される複数のルートウィンドウ上に跨って表示されるトップウィンドウの座標情報を管理し、
１つのコンピュータは、このコンピュータが表示しようとするトップウィンドウのうち、このコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示される領域以外の部分の描画情報および座標情報を、他のコンピュータに送信し、
当該他のコンピュータは、前記領域以外の部分の描画情報および座標情報を受信したら、この部分を、当該他のコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示する
ことを特徴とする画面共有方法。
【請求項３】
表示装置とコンピュータの組が、複数、ネットワークで接続された状態で複数のコンピュータが画面を共有するためのプログラムにおいて、
各コンピュータが、各コンピュータと組になっている表示装置に表示されるルートウィンドウの座標情報を管理するステップと、
各コンピュータが、複数の表示装置に表示される複数のルートウィンドウ上に跨って表示されるトップウィンドウの座標情報を管理するステップと、
１つのコンピュータが、このコンピュータが表示しようとするトップウィンドウのうち、このコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示される領域以外の部分の描画情報および座標情報を、他のコンピュータに送信するステップと、
当該他のコンピュータが、前記領域以外の部分の描画情報および座標情報を受信したら、この部分を、当該他のコンピュータと組になっている表示装置に表示されているルートウィンドウ上に表示するステップと
を各コンピュータに実行させることを特徴とする画面共有プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコンピュータに接続された複数の表示装置に跨って一つのウィンドウアプリケーションを表示させる画面共有システム、画面共有方法および画面共有プログラムに関する。
【背景技術】
【０００２】
Microsoft（登録商標） RemoteDesktop（以下、公知技術１と呼ぶ）やＶＮＣ（以下、公知技術２と呼ぶ）の場合、ルートウィンドウの画面データを転送することにより画面共有を実現する。公知技術１はMicrosoft（登録商標）が提供するWindows（登録商標）のオペレーティングシステム上でしか画面共有することができない。次に公知技術２だが、ＲＦＢ（Remote Framebuffer）プロトコルをサポートするオペレーティングシステム上でしか画面共有することができない。また、ＲＦＢプロトコルをサポートするプログラムをWindows（登録商標）上に実装したとしても、ルートウィンドウの画面データを送受信するという機構のため、その画面データよりトップウィンドウと背景を区別することができない。したがってウィンドウアプリケーションを画面の切り替えなしに相互に表示することはできない。
【０００３】
X Window System（以下、公知技術３と呼ぶ）の場合、Ｘプロトコルをサポートするオペレーティングシステム間でネットワーク透過的にＧＵＩが利用可能である。しかし、Windows（登録商標）のウィンドウマネージャはＸプロトコルをサポートしないため、異なるオペレーティングシステムのウィンドウアプリケーションを表示することができない。また、Ｘプロトコルはウィンドウアプリケーションを遠隔利用する目的で作られているため、複数のコンピュータに接続された表示装置に跨って一つのウィンドウアプリケーションを表示することはできない。
【０００４】
公知技術２の技術に基づくMetaVNC（以下、公知技術４と呼ぶ）では、アプリケーションウィンドウ以外の背景領域を透過領域（透過ピクセルとも呼ぶ）として扱うことにより、異なるオペレーティングシステム間においても、ローカルのデスクトップのアプリケーションウィンドウと、リモートのデスクトップのアプリケーションウィンドウを一つの表示装置上に表示することができる。公知技術４は異なるオペレーティングシステムを含む複数のコンピュータ間で画面共有を行うことができるが、次の三つの課題がある。
【０００５】
一つ目の課題は、ＶＮＣが用いるＲＦＢプロトコルではＸサーバがローカルデスクトップとリモートデスクトップの２つのＸクライアントに対して同じ座標にてウィンドウアプリケーションを表示するために、物理的に並べられた表示装置を跨るようにウィンドウを表示できない。
【０００６】
二つ目の課題は、公知技術４がフルスクリーンモードと透明な背景を用いたローカルデスクトップとリモートデスクトップの画面の合成であるため、ローカルデスクトップに表示されるウィンドウとリモートデスクトップに表示される個々のウィンドウを一つの深度レベル（Z-Order）で管理できない点である。つまり、リモートデスクトップのウィンドウの１つをマウスで選択するとリモートデスクトップのすべてのウィンドウがローカルデスクトップより前面に表示されることになる。また、透明な背景を用いた合成を行う実装上の理由により、Ｘサーバ側の背景に壁紙は使用できず単色の背景でなければならない。
【０００７】
三つ目の課題は、ウィンドウごとに転送された画面データが管理されないため、ローカルデスクトップとリモートデスクトップを合成したアルファブレンディング表示が行えないことである。
【０００８】
複数のコンピュータ（異なるオペレーティングシステムである場合を含む）に接続された複数の表示装置に跨って一つのウィンドウアプリケーションを表示することは、例えば仮想ディスプレイドライバを用いた画像転送を用いてデュアルディスプレイシステムにて実現可能である。しかし、複数のコンピュータ（異なるオペレーティングシステムである場合を含む）で動作する複数のウィンドウアプリケーションを複数の表示装置に跨って、画面の切り替えを行うことなく同時に表示して利用することはできない。
【０００９】
異なるオペレーティングシステムを含む複数のコンピュータ間で、キーボードやマウスといったポインティングデバイスなどの入力装置を共有する技術としては、Win2VNC（以下、公知技術５と呼ぶ）やSynergy（以下、公知技術６と呼ぶ）などがある。これらの技術を用いて、異なるオペレーティングシステムを含む複数のコンピュータに接続された表示装置を物理的に並べて配置した場合、それらをひとそろいのキーボードやマウスといった入力装置で操作することができる。また、ポインティングデバイスが表示装置の右端にあたると、もう一方の表示装置の左端に現れるといった操作が可能である。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００７−１６４３３０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、複数のコンピュータ（異なるオペレーティングシステムである場合を含む）に接続された複数の表示装置に跨って一つのウィンドウアプリケーションを複数のコンピュータが相互に表示できる（以下、マルチコンピュータ・マルチディスプレイ環境と言う場合がある）画面共有システム、画面共有方法および画面共有プログラムを提供することである。
【課題を解決するための手段】
【００１２】
本発明の利用環境として、物理的に並べて配置された複数の表示装置（ディスプレイ）および、それらに接続する複数のコンピュータ（異なるオペレーティングシステムである場合を含む）および、それらを操作する一つのポインティングデバイスとキーボードといった入力装置から構成される。本発明により、利用者は一つのコンピュータに複数の表示装置が接続された環境（マルチディスプレイ環境）を使う認識で複数のコンピュータを一つの統合されたディスプレイ空間（描画空間）として利用することができる。そのための仕組みとして、本発明は以下の画面共有方法を特徴として具備する。
【００１３】
・複数のコンピュータに接続された表示装置を、連続した一つの座標空間および描画空間として扱うため、画面共有システムに参加するコンピュータのルートウィンドウ（表示装置に表示される画像領域の名称、デスクトップとも呼ばれる）の座標情報を管理し、ウィンドウアプリケーション（ルートウィンドウに対してトップウィンドウとも呼ばれる）の画像情報のうち、異なるコンピュータへ転送する一部の座標領域を判定アルゴリズムにより抽出し、その抽出された画像情報を管理し、その画像情報が描画されるべき座標を管理するためのデータ構造およびその固有の処理ステップを持つ。
【００１４】
・各コンピュータのオペレーティングシステムには、ウィンドウマネージャやＸサーバなどと呼ばれるプログラムが実装されている。このプログラムは、ウィンドウアプリケーションの生成、削除、描画、合成を管理して、表示装置に表示するルートウィンドウの画像データ（フレームバッファとも呼ばれる）を生成する。また、このプログラムが、ウィンドウアプリケーションの画像をルートウィンドウに合成する目的で、オフスクリーンバッファと呼ばれるメモリ領域に書き込みを行う。本発明では、このオフスクリーンバッファへの書き込みを行った時点で「画面共有制御部」というプログラムが画面共有の目的に応じて、オフスクリーンバッファをコピーし、異なるコンピュータの「画面共有制御部」に送信するという固有の処理ステップを持つ。
【００１５】
・コピーされたオフスクリーンバッファのデータを受信したコンピュータの「画面共有制御部」は、ウィンドウマネージャやＸサーバなどと呼ばれるプログラムに働きかけ、受信した部分的な画像を表示するためのウィンドウアプリケーションを生成して、送信元の要求により、画像の更新やウィンドウアプリケーションの削除といった状態管理を行うという固有の機構を持つ。
【００１６】
本発明では、仮想ディスプレイドライバの上位にあたるウィンドウマネージャにより、ウィンドウアプリケーションの画像データが、メモリ上のオフスクリーンバッファに描画されたタイミングで、バッファ上のデータをコピーしてネットワークを経由して送信することにより、複数のコンピュータにそれぞれ接続された物理的に並べて配置された複数個の表示装置に跨って一つのウィンドウアプリケーションを表示することを特徴としている。
【００１７】
あるウィンドウアプリケーションが、異なるコンピュータに接続される表示装置の画像の描画領域に重なる場合に、ウィンドウマネージャはメモリ上のオフスクリーンバッファに描画した画像データをコピーして、異なるコンピュータに転送する。その画像データを受信したプログラムは、そのコンピュータのウィンドウマネージャに画像表示用のウィンドウの生成を命令して、そのウィンドウ上に画像を表示する。物理的に並べて配置された異なるコンピュータに接続される複数個の表示装置上に、画像データが跨って表示される。また、転送された画像データは一つのウィンドウとしてリモートデスクトップで扱われるため、一つの深度レベル（Z-Order）にて管理が可能となる。また、個々のウィンドウについて転送された画像データに対するマスク画像が存在しうるため、アルファブレンディング表示も可能となる。
【発明の効果】
【００１８】
第１の効果は、異なるコンピュータで動作する複数のウィンドウアプリケーションの操作について、画面を切り替えることなく物理的に並べて配置した複数の表示装置を一つの表示装置として画面を跨って利用できることである。
【００１９】
その理由は、本発明が異なるコンピュータのウィンドウアプリケーションの物理的な並べて配置した表示装置を連続した描画空間として扱い、描画情報を相互に転送して他の表示装置と描画領域が重なる部分のウィンドウを表示できるためである。
【００２０】
第２の効果は、異なるオペレーティングシステム間であってもウィンドウアプリケーションが動作するオペレーティングシステムが提供するウィンドウの見た目で操作できることである。
【００２１】
その理由は、転送される描画情報は、ウィンドウの枠や枠に配置されているボタンも含めて描画情報として転送し、転送された側のリモートトップウィンドウはその描画情報を忠実に表示するだけのウィンドウであるため、表示装置を跨る境界線でウィンドウの枠のデザインが変わることはない。アルファブレンディングを用いるウィンドウについても、転送先がアルファブレンディングをサポートしていれば、同様の外観を再現することができる。
【００２２】
第３の効果は、ネットワークの大域を消費しないため効率的であることである。
【００２３】
その理由は、リモートデスクトップのように画面全体の描画情報を転送するのではなく、他の表示装置と描画領域が重なる部分の描画情報についてのみ転送するため、重なる部分がない場合、トラフィックが発生しない。また、重なる部分が小さい場合についても転送する情報量が少ないためネットワークの大域を消費しないため効率的である。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１の実施形態の構成を示す図である。
【図２】画面共有システムへの参加手順を示すフローチャートである。
【図３】管理テーブル１１９を示す図である。
【図４】コンピュータＡ，Ｂの物理的に配置された表示装置の描画を示す図である。
【図５】コンピュータＡ，Ｂの管理テーブルの例を示す図である。
【図６】コンピュータＡ，Ｂ，Ｃ，Ｄの物理的に配置された表示装置の描画を示す図である。
【図７】コンピュータＡ，Ｂ，Ｃ，Ｄの管理テーブルの例を示す図である。
【図８】描画領域の重なりの有無の判定方法と、その場合の転送対象領域を示す図である。
【図９】転送対象領域の取得フローを示す図である。
【図１０】画面共有制御部の描画に関する送信処理フローである。
【図１１】画面共有制御部の描画に関する受信処理フローである。
【発明を実施するための形態】
【００２５】
次に、本発明の第１の実施形態の構成について図面を参照して詳細に説明する。図１を参照すると、本発明の第１の実施形態は、プログラム制御により動作するコンピュータＡ（中央処理装置；プロセッサ；データ処理装置）１００と、コンピュータＢ（中央処理装置；プロセッサ；データ処理装置）２００と、コンピュータＡ１００に接続されている表示装置１０１および入力装置１１６と、コンピュータＢ２００に接続されている表示装置２０１および入力装置２１６とを備えている。
【００２６】
コンピュータＡ１００は、ディスプレイドライバ１０２と、ルートウィンドウバッファ１０４と、ウィンドウマネージャ１０５と、オフスクリーンバッファ１０７と、コンピュータＢにとってのリモートトップウィンドウ１１０のためのオフスクリーンバッファ１１１と、オフスクリーンバッファブローカ１１２と、入力装置ブローカ１１３と、ネットワークインタフェース１１４と、入力装置ドライバ１１５と、仮想入力装置ドライバ１１７と、画面共有制御部１１８と、管理テーブル１１９とを備えている。ウィンドウマネージャ１０５は、ルートウィンドウ１０３と、トップウィンドウ１０６と、コンピュータＢにとってのリモートトップウィンドウ１１０とを管理する。オフスクリーンバッファ１０７には、描画情報ａ１０８および描画情報ｂ１０９が格納されている。オフスクリーンバッファ１１１には、描画情報ｃ２０８が格納されている。
【００２７】
コンピュータＢ２００は、ディスプレイドライバ２０２と、ルートウィンドウバッファ２０４と、ウィンドウマネージャ２０５と、オフスクリーンバッファ２０７と、コンピュータＡにとってのリモートトップウィンドウ２１０のためのオフスクリーンバッファ２１１と、オフスクリーンバッファブローカ２１２と、入力装置ブローカ２１３と、ネットワークインタフェース２１４と、入力装置ドライバ２１５と、仮想入力装置ドライバ２１７と、画面共有制御部２１８と、管理テーブル２１９とを備えている。ウィンドウマネージャ２０５は、ルートウィンドウ２０３と、トップウィンドウ２０６と、コンピュータＡにとってのリモートトップウィンドウ２１０とを管理する。オフスクリーンバッファ２０７には、描画情報ｃ２０８および描画情報ｄ２０９が格納されている。オフスクリーンバッファ２１１には、描画情報ｂ１０９が格納されている。
【００２８】
コンピュータＡ１００のネットワークインタフェース１１４と、コンピュータＢ２００のネットワークインタフェース２１４とは、ネットワークで接続されている。
【００２９】
これらの手段はそれぞれ概略つぎのように動作する。まず、コンピュータＡ１００の画像出力手段としては、コンピュータＡ１００上で動作するトップウィンドウ１０６がウィンドウマネージャ１０５の機能の呼び出しにより新規に生成、もしくは再描画され、その描画情報がオフスクリーンバッファ１０７に記録される。オフスクリーンバッファブローカ１１２は記録された描画情報をコンピュータＡ１００の表示装置１０１に表示する描画情報ａ１０８と、コンピュータＢ２００の表示装置２０１に表示する描画情報ｂ１０９に分ける。オフスクリーンバッファブローカ１１２は描画情報ｂ１０９をコンピュータＢ２００のオフスクリーンバッファブローカ２１２にネットワークインタフェース１１４と、ネットワークインタフェース２１４とを経由して転送する。また、オフスクリーンバッファブローカ１１２はコンピュータＢ２００から転送された描画情報ｃ２０８の管理をウィンドウマネージャ１０５に命令する。ウィンドウマネージャ１０５は、リモートトップウィンドウ１１０を、新規に生成もしくは再描画するために、オフスクリーンバッファ１１１に描画情報ｃ２０８を保持する。コンピュータＡ１００の表示装置１０１に表示する際に、描画情報ａ１０８および描画情報ｃ２０８を、ルートウィンドウ１０３を管理するルートウィンドウバッファ１０４に書き込み、描画情報を合成して、ディスプレイドライバ１０２への描画命令にて表示装置１０１に描画する。
【００３０】
コンピュータＡ１００の入力手段としては、マウスなどのポインティングデバイスからの操作イベントやキーボードからの操作イベントを入力装置１１６が保持し、入力装置ドライバ１１５に伝達する。入力装置１１６はコンピュータＡ１００とコンピュータＢ１０１で共有されるため、ポインティングデバイスの座標にしたがって入力装置ブローカ１１３が動作する。
【００３１】
コンピュータＡ１００のネットワーク通信手段としては、描画情報ｂ１０９をコンピュータＢ２００のリモートトップウィンドウ２１０のオフスクリーンバッファ２１１に転送したり、入力装置ドライバ１１５の操作イベントをコンピュータＢ２００の仮想入力装置ドライバ２１５に転送したりする。ネットワーク通信はＬｏｃａｌ  Ａｒｅａ  ＮｅｔｗｏｒｋでのＴＣＰ／ＩＰ通信など既存技術を用いて行う。
【００３２】
次に、第１の実施形態の動作を詳細に説明する。まず、本発明の実施結果のイメージを図４に示す。コンピュータＡに表示装置１０１が接続され、コンピュータＢに表示装置２０１が接続されている環境にて、コンピュータＡの１つのアプリケーションの画像がトップウィンドウ１０６とリモートトップウィンドウ２１０に分割され、２つの表示装置を跨るように表示されている。また、コンピュータＢの１つのアプリケーションの画像がトップウィンドウ２０６とリモートトップウィンドウ１１０に分かれ、２つの表示装置を跨るように表示されている。
【００３３】
次に、図３を参照して本発明の画面共有システムに参加しているコンピュータの情報を管理するためのルートウィンドウ管理テーブル５００について説明する。ルートウィンドウ管理テーブル５００は、画面共有システムに所属しているルートウィンドウＩＤの一覧と、どのルートウィンドウがローカルのコンピュータのものであるかを示す情報と、ルートウィンドウのグローバル座標とから構成されている。ルートウィンドウのグローバル座標は、画面共有システムを構成する際の最初のコンピュータのルートウィンドウの左上の座標を原点（０，０）として、追加されたコンピュータの表示装置の物理的な配置に一致するように、表示装置の画面解像度分以上の距離をおいて、追加されたコンピュータのルートウィンドウのグローバル座標が設定される。物理的な配置の定義は、画面共有システムを利用するユーザが行う。
【００３４】
図５のｍ０のルートウィンドウ管理テーブルの例Ｒ５００、Ｒ５０１が示すように、左にｍ０、右にｍ１といった表示装置の配置をユーザが定義した場合に、すべての表示装置の解像度が１２８０×１０２４だとすると、それぞれＲ５００やＲ５０１の第３列に記載されたルートウィンドウのグローバル座標となる。
【００３５】
次に、コンピュータＡ１００とコンピュータＢ２００が画面共有システムを構成する場合の画面共有システムへの参加手順を図２のフローチャートを用いて説明する。ここでは、ユーザがコンピュータＡ１００を操作して手続きを行う場合を例に説明する。まず、コンピュータＡ１００の画面共有制御部１１８は、ネットワークインタフェース１１４、２１４を経由してルートウィンドウ管理テーブル５００の有無をコンピュータＢ２００の画面共有制御部２１８に問い合わせ、結果を取得し、その結果をコンピュータＡの画面共有制御部１１８が持つルートウィンドウ管理テーブル５００の有無の情報と照合する（ステップＳ４００）。そして、その結果として、４つの処理フローに分岐する。
【００３６】
１つ目の処理フローとして、コンピュータＡ１００にルートウィンドウ管理テーブル５００が既にある場合、コンピュータＡ１００のルートウィンドウ管理テーブル５００にコンピュータＢ２００のレコードを追加する（ステップＳ４０１）。次に、コンピュータＡのルートウィンドウ管理テーブル５００をネットワークインタフェース１１４と２１４を経由してコンピュータＢに複製する（ステップＳ４０２）。コンピュータＡのルートウィンドウ管理テーブル５００にその他のコンピュータのレコードがもしある場合、ネットワークインタフェース１１４を用いてコンピュータＢ２００のレコードの追加を通知する（ステップＳ４０３）。
【００３７】
２つ目の処理フローとして、コンピュータＢ２００にルートウィンドウ管理テーブル５００が既にある場合、コンピュータＢ２００のルートウィンドウ管理テーブル５００にコンピュータＡ１００のレコードを追加する（ステップＳ４０４）。次に、コンピュータＢのルートウィンドウ管理テーブル５００をネットワークインタフェース２１４と１１４を経由してコンピュータＡに複製する（ステップＳ４０５）。コンピュータＢのルートウィンドウ管理テーブル５００にその他のコンピュータのレコードがもしある場合、ネットワークインタフェース２１４を用いてコンピュータＡのレコードの追加を通知する（ステップＳ４０６）。
【００３８】
３つ目の処理フローとして、コンピュータＡ１００とコンピュータＢ２００にルートウィンドウ管理テーブル５００がある場合、画面共有制御部１１８と２１８間の通信により２つのルートウィンドウ管理テーブル５００のレコード情報をマージする（ステップＳ４０７）。次に、コンピュータＡ１００はマージした結果をコンピュータＡ１００とコンピュータＢ２００のルートウィンドウ管理テーブル５００に登録されているその他のコンピュータにネットワークインタフェースを介して通知を行う（ステップＳ４０８）。
【００３９】
４つ目の処理フローとして、コンピュータＡ１００にもコンピュータＢ２００にもルートウィンドウ管理テーブル５００がない場合、画面共有制御部１１８と２１８は、それぞれルートウィンドウ管理テーブル５００を新規に作成し、コンピュータＡ１００とコンピュータＢ２００のレコードを追加する（ステップＳ４０９）。
【００４０】
４つの分岐した処理フローのうち該当するものが完了すると、画面共有制御部１１８はユーザに対して、マウスなどのポインティングデバイスやキーボードといった入力装置１１６の制御先のコンピュータの指定を要求する（ステップＳ４１０）。ルートウィンドウ管理テーブル５００にレコードとして登録されている任意の台数のコンピュータが指定対象になるが、ここでは、コンピュータＡ１００とコンピュータＢ２００と他のコンピュータＣのそれぞれが指定された３つに分岐した処理フローについて説明する。
【００４１】
まず、コンピュータＡ１００を制御先と指定した場合、入力装置１１６から入力された信号は入力装置ドライバ１１５によって、そのままコンピュータＡ１００を操作することができる。コンピュータＡ以外の入力装置、例えばコンピュータＢ２００の入力装置２１６から入力があった場合、入力された信号は、入力装置ドライバ２１５が受け取るが、入力装置ブローカ２１３によって、ネットワークインタフェース２１４、１１４を介して入力装置ブローカ１１３に転送され、コンピュータＡ１００の仮想入力装置ドライバ１１７からコンピュータＡ１００への入力として処理される（ステップＳ４１１）。
【００４２】
２つ目の処理フローとして、コンピュータＢを制御先として指定した場合、入力装置２１６から入力された信号は、入力装置ドライバ２１５によって、そのままコンピュータＢ２００を操作することができる。コンピュータＢ以外の入力装置、例えばコンピュータＡ１００の入力装置１１６から入力があった場合、入力された信号は、入力装置ドライバ１１５が受け取るが、入力装置ブローカ１１３によって、ネットワークインタフェース１１４、２１４を介して入力装置ブローカ２１３に転送され、コンピュータＢ２００の仮想入力装置ドライバ２１７からコンピュータＢ２００への入力として処理される（ステップＳ４１２）。
【００４３】
３つ目の処理フローとして、ルートウィンドウ管理テーブル５００に登録されている他コンピュータＣを制御先と指定した場合も、同様にコンピュータＣの入力装置でコンピュータＣの操作ができ、入力装置１１６や２１６から入力があった場合は、最終的にコンピュータＣの仮想入力装置ドライバに転送されてコンピュータＣを操作できる（ステップＳ４１３）。以上で、画面共有システムへの参加が完了する。
【００４４】
次に、図３に示したコンピュータｍｉ上で動作するウィンドウアプリケーションである個々のトップウィンドウを管理するテーブル、ｍｉのトップウィンドウ管理テーブル５０１について説明する。トップウィンドウ管理テーブル５０１は、トップウィンドウＩＤと、トップウィンドウのグローバル座標と、描画情報の転送先のルートウィンドウＩＤから構成されている。トップウィンドウＩＤは、ルートウィンドウＩＤとウィンドウＩＤの連結された情報にて一意に識別することができる情報を使用する。描画情報の転送先のルートウィンドウＩＤは、そのｍｉ上で動作するトップウィンドウがｍｉ以外のコンピュータに接続された表示装置の描画領域に重なる場合に、そのコンピュータのルートウィンドウＩＤを記録する列である。
【００４５】
例えば、図５のｍ０のトップウィンドウ管理テーブルの例Ｒ５０２のようにトップウィンドウｍ０−ＩＤ１が２つの表示装置上に、第２列に記載されたグローバル座標のように配置された場合、第３列のような描画情報転送先のルートウィンドウＩＤが図１０のステップＳ７１３、Ｓ７１４、Ｓ７１５、Ｓ７１６、Ｓ７１７で特定され、トップウィンドウ管理テーブルの第３列に記録される（図１０のＳ７１８）。具体的には、Ｓ７１３にて、ルートウィンドウＩＤがｍ１の場合、自マシン（自分自身のコンピュータ）ではないため、処理がＳ７１４に移り、ｂ（ｘ）≧Ａ（ｘ）は、１３９９≧０で真となり、Ｓ７１５では、ａ（ｘ）≦Ｂ（ｘ）は、６００≦１２７９で真となり、Ｓ７１６では、ｂ（ｙ）≧Ａ（ｙ）は、４９９≧０で真となり、Ｓ７１７では、ａ（ｙ）≦Ｂ（ｙ）は、６００≦１０２３で真となり、処理がＳ７１８に移り、ルートウィンドウＩＤｍ１が描画情報転送先のルートウィンドウＩＤとしてレコードに記述される。
【００４６】
次に、図３に示したｍｉのトップウィンドウ管理テーブル５０１のレコードの描画情報転送先のルートウィンドウＩＤが存在する場合に、そのトップウィンドウの描画情報の転送対象領域を管理するｍｉの描画情報転送対象領域の管理テーブル５０２について説明する。描画情報転送対象領域の管理テーブル５０２は、第１列のトップウィンドウＩＤと、第２列の描画情報転送先のルートウィンドウＩＤの組み合わせをキーとして一意に識別されるレコードから成る。そのキーによって管理される情報として、描画情報転送対象領域のグローバル座標であるｐ（ｘ，ｙ）とｑ（ｘ，ｙ）のデータが管理される。
【００４７】
例えば、図５のｍ０の描画情報転送対象領域の管理テーブルの例Ｒ５０４のように、トップウィンドウｍ０−ＩＤ１の情報からＲ５０２に記録されたａ０１（ｘ，ｙ）とｂ０１（ｘ，ｙ）のデータを取得し、描画情報転送先のルートウィンドウＩＤｍ１の情報からＲ５００に記録されたＡ１（ｘ，ｙ），Ｂ１（ｘ，ｙ）のデータを取得し、図９のＳ６００からＳ６１１のフロー処理より、ｐ（ｘ，ｙ）とｑ（ｘ，ｙ）のデータを取得し、管理テーブルＲ５０４にレコードとして記録する。具体的には、図９のＳ６００では、ａ０１（ｘ）＜Ａ１（ｘ）は、６００＜１２８０で真となり、Ｓ６０１にて、ｐ（ｘ）＝１２８０となる。Ｓ６０３では、ａ０１（ｙ）＜Ａ１（ｙ）は、１００＞０で偽となり、Ｓ６０５にてｐ（ｙ）＝１００となる。Ｓ６０６では、ｂ０１（ｘ）＜Ｂ１（ｘ）は、１３９９＜２５９９で真となり、Ｓ６０７にて、ｑ（ｘ）＝１３９９となる。Ｓ６０９では、ｂ０１（ｙ）＜Ｂ１（ｙ）は、４９９＜１０２３で真となり、Ｓ６１０にてｑ（ｙ）＝４９９となる。なお、図９の処理は、図８に示したルートウィンドウのグローバル座標とトップウィンドウのグローバル座標の大小関係による重なり方の分類に従って転送対象領域を抽出し、それをｐ（ｘ，ｙ）とｑ（ｘ，ｙ）に代入する処理をフロー化したものである。
【００４８】
次に、図１０に示した画面共有制御部の描画に関する処理フロー（送信処理）について説明する。共有画面システムに参加したコンピュータの画面共有制御部（図１の１１８や２１８）は、コンピュータｍｉ上で動作するウィンドウアプリケーションである個々のトップウィンドウからのウィンドウマネージャ（図１の１０５や２０５）に送られる４つのイベント（トップウィンドウの再描画Ｓ７００、トップウィンドウの生成と描画Ｓ７０８、トップウィンドウのリサイズと描画Ｓ７１０、トップウィンドウの消滅Ｓ７２２）を関数のラッパー処理、呼び出し関数のオーバーライドなどによりウィンドウアプリケーションとウィンドウマネージャの処理の間に入り、そのイベントの発生を契機に処理を開始する。
【００４９】
まず、トップウィンドウの生成と描画Ｓ７０８のイベントが発生した場合、トップウィンドウのＩＤを生成し、オフスクリーンバッファを生成して、ウィンドウアプリケーションの描画情報を格納する（Ｓ７０９）。Ｓ７１２にてルートウィンドウのカウンタｉを０にセットし、Ｓ７１３にて、図３にて示したｍｉのルートウィンドウ管理テーブル５００を参照して、ルートウィンドウＩＤがｍｉであるレコードのローカルコンピュータの列のデータを確認して自マシンである場合（データが○である場合）は、Ｓ７１３の結果を偽として、ｉをカウントアップし、Ｓ７１３を再度判定する。（フロー図からは省略したが、ｉがｉの最大値を超えてルートウィンドウ管理テーブルに該当するレコードがなくなった場合、描画対象領域なしとしてフロー処理は終了する。）ローカルコンピュータの列のデータを確認して自マシンでない場合（データが−である場合）は、Ｓ７１３の結果を真として、Ｓ７１４からＳ７１７の比較を実施し、全て真であれば、Ｓ７１８を実施し、一つでも偽があれば、ルートウィンドウｍｉに対する描画転送対象領域はないと判定して、Ｓ７２６の判定にてリサイズのイベントではないため、Ｓ７２１の判定に処理が移動し、ｉをカウントアップし、ｍｉ＞ｍｍａｘの場合（ｍｉが存在しない場合）にフローは終了し、ｍｉが存在する場合は、Ｓ７１３からカウントアップされたｉのルートウィンドウｍｉについて処理を行う。Ｓ７１８では、既に説明したようにｍｉのトップウィンドウ管理テーブル（図３の５０１）の描画情報転送先のルートウィンドウＩＤにｍｉを記録し、Ｓ７１９にて図９の転送対象領域のグローバル座標ｐ、ｑを取得し、ｍｉの描画情報転送対象領域の管理テーブル（図３の５０２）に記録する。次に、Ｓ７２０にて、管理テーブルより描画対象領域のｐ、ｑの座標値を取得し、トップウィンドウのａｉｊのグローバル座標値より、ｐ、ｑのグローバル座標値をＳ７０９やＳ７１１で生成したオフスクリーンバッファ上のローカル座標に変換して示される領域の描画情報（ＲＧＢ情報、必要に応じてアルファブレンディングのマスク情報を含む）を取得してトップウィンドウＩＤとともにｍｉの画面共有制御部に送信する。Ｓ７２１にてｉをカウントアップし、ｍｉ＞ｍｍａｘの場合（ｍｉが存在しない場合）にフローは終了し、ｍｉが存在する場合は、Ｓ７１３か
らカウントアップされたｉのルートウィンドウｍｉについて処理を行う。
【００５０】
トップウィンドウのリサイズと描画Ｓ７１０のイベントが発生した場合、Ｓ７１１にて、トップウィンドウのＩＤを取得し、オフスクリーンバッファを生成して、ウィンドウアプリケーションの描画情報を格納する。トップウィンドウの生成と描画Ｓ７０８のイベントが発生した場合と同様に、Ｓ７１３からＳ７１７の判定により、描画転送対象領域があるか、ないかを判定する。描画転送対象領域がある場合は、既に説明したように描画情報転送先のルートウィンドウＩＤにｍｉを管理テーブル５０１に記録する。ただし、リサイズ処理のため既に描画情報転送先のルートウィンドウＩＤｍｉが該当レコード行に存在する場合は何もしない。Ｓ７１９にて転送対象領域を取得し、ｍｉの描画情報転送対象領域の管理テーブル５０２に記載する。ただし、リサイズ処理のため既に描画情報転送対象領域のグローバル座標のレコード行が存在する場合、ｐ（ｘ）、ｐ（ｙ）、ｑ（ｘ）、ｑ（ｙ）の座標データを更新する。Ｓ７２０、Ｓ７２１については、トップウィンドウの生成と描画Ｓ７０８と全く同様に処理する。Ｓ７１４からＳ７１７の処理にて、偽の判定があった場合は、描画転送対象領域がないので、Ｓ７２６にてトップウィンドウのリサイズと描画の処理中の場合は、Ｓ７２７にて、リモートのコンピュータｍｉへの描画対象領域の情報がリストにあるかをトップウィンドウ管理テーブル５０１の処理中のトップウィンドウＩＤについて確認する。ある場合は、Ｓ７２８にて領域のリモートトップウィンドウの削除依頼をウィンドウＩＤとともに、ｍｉに送信する。そして、Ｓ７２９にてトップウィンドウＩＤと描画情報転送先のルートウィンドウＩＤに関連するレコード行を５０２から削除し、トップウィンドウ管理テーブル５０１から、トップウィンドウＩＤに関連する第３列の描画情報転送先のルートウィンドウＩＤの該当するルートウィンドウＩＤのデータを削除する。その後のＳ７２１については、トップウィンドウの生成と描画Ｓ７０８が発生した場合と同じである。
【００５１】
トップウィンドウの消滅Ｓ７２２のイベントが発生した場合、Ｓ７２３にて消滅するトップウィンドウのＩＤを取得する。Ｓ７２４にてルートウィンドウのカウンタｉを０にセットし、Ｓ７２５にて、図３にて示したｍｉのルートウィンドウ管理テーブル５００を参照して、ルートウィンドウＩＤがｍｉであるレコードのローカルコンピュータの列のデータを確認して自マシンである場合（データが○である場合）は、Ｓ７２５の結果を偽として、ｉをカウントアップし、Ｓ７２５を再度判定する。（フロー図からは省略したが、ｉがｉの最大値を超えてルートウィンドウ管理テーブルに該当するレコードがなくなった場合、描画対象領域なしとしてフロー処理は終了する。）ローカルコンピュータの列のデータを確認して自マシンでない場合（データが−である場合）は、Ｓ７２５の結果を真とする。既に説明したＳ７２７、Ｓ７２８、Ｓ７２９の処理を行い、Ｓ７２１にて、ｉをカウントアップし、ｍｉ＞ｍｍａｘの場合（ｍｉが存在しない場合）にフローは終了し、ｍｉが存在する場合は、Ｓ７２５からカウントアップされたｉのルートウィンドウｍｉについて処理を行う。
【００５２】
トップウィンドウの再描画Ｓ７００のイベントが発生した場合、Ｓ７０１にて再描画するトップウィンドウのＩＤを取得し、オフスクリーンバッファを生成して、ウィンドウアプリケーションの描画情報を格納する。Ｓ７０２にてルートウィンドウのカウンタｉを０にセットし、Ｓ７０３にて、図３にて示したｍｉのルートウィンドウ管理テーブル５００を参照して、ルートウィンドウＩＤがｍｉであるレコードのローカルコンピュータの列のデータを確認して自マシンである場合（データが○である場合）は、Ｓ７０３の結果を偽として、ｉをカウントアップし、Ｓ７０３を再度判定する。（フロー図からは省略したが、ｉがｉの最大値を超えてルートウィンドウ管理テーブルに該当するレコードがなくなった場合、描画対象領域なしとしてフロー処理は終了する。）ローカルコンピュータの列のデータを確認して自マシンでない場合（データが−である場合）は、Ｓ７０３の結果を真とする。Ｓ７０４にて、リモートのコンピュータｍｉへの描画対象領域の情報がリストにあるかをトップウィンドウ管理テーブル５０１の処理中のトップウィンドウＩＤについて確認する。ある場合は、Ｓ７０５にて、管理テーブルより描画対象領域のｐ、ｑの座標値を取得し、トップウィンドウのａｉｊのグローバル座標値より、ｐ、ｑのグローバル座標値をＳ７０１で生成したオフスクリーンバッファ上のローカル座標に変換して示される領域の描画情報（ＲＧＢ情報、必要に応じてアルファブレンディングのマスク情報を含む）を取得する。Ｓ７０６にて、描画対象領域の描画情報を、ウィンドウＩＤとともに、ｍｉに送信する。Ｓ７０７にてｉをカウントアップし、ｍｉ＞ｍｍａｘの場合（ｍｉが存在しない場合）にフローは終了し、ｍｉが存在する場合は、Ｓ７０３からカウントアップされたｉのルートウィンドウｍｉについて処理を行う。
【００５３】
次に、図１１に示した画面共有制御部の描画に関する処理フロー（受信処理）について説明する。共有画面システムに参加したコンピュータの画面共有制御部（図１の１１８や２１８）は、ｍｉをルートウィンドウに持つコンピュータから図１０で示した処理によりリモートトップウィンドウの生成や削除、リサイズや再描画の依頼を送信する。その依頼を受信したｍｋをルートウィンドウに持つコンピュータは、図３のリモートトップウィンドウの描画対象領域の管理テーブル５０３にて、リモートトップウィンドウの管理を行う。
【００５４】
トップウィンドウＩＤ（ｍｉ−ＩＤｊ）と描画情報を受信した場合（Ｓ９００）、Ｓ９０１にて、トップウィンドウの描画対象領域の管理テーブル５０３の第１列にてｍｉ−ＩＤｊに一致するレコードが存在するかを確認する。存在する場合、Ｓ９０２にて受信データにｐ、ｑの座標値があるかを確認する。ｐ、ｑの座標値がある場合、リモートトップウィンドウのリサイズと再描画の依頼であることがわかるので、Ｓ９０３にてリモートトップウィンドウの描画対象領域の管理テーブル５０３のレコードのｐ、ｑの座標値を更新する。そして、Ｓ９０４にて、ｍｉ−ＩＤｊに一致するレコードに記録されているｍｋのトップウィンドウＩＤ（ＩＤｎ）を指定して、受信した描画情報（ＲＧＢ情報、必要に応じてアルファブレンディングマスク情報）でリモートトップウィンドウのリサイズと再描画をウィンドウマネージャに命令して処理フローを完了する。Ｓ９０２にてｐ、ｑの座標値がない場合、リモートトップウィンドウの再描画の依頼であることがわかるので、Ｓ９０５にて、ｍｉ−ＩＤｊに一致するレコードに記録されているｍｋのトップウィンドウＩＤ（ＩＤｎ）を指定して、受信した描画情報（ＲＧＢ情報、必要に応じてアルファブレンディングマスク情報）でリモートトップウィンドウの再描画をウィンドウマネージャに命令して処理フローを完了する。Ｓ９０１の判定にて、ｍｉ−ＩＤｊに一致するレコードが存在しなかった場合、リモートトップウィンドウの生成の依頼であることがわかるので、Ｓ９０６にてリモートトップウィンドウの描画対象領域の管理テーブル５０３にレコードを追加し、Ｓ９０７にて、受信したｐ、ｑの座標値と描画情報でリモートトップウィンドウの生成をウィンドウマネージャに命令する。そして、Ｓ９０８にて生成されたｍｋのトップウィンドウＩＤ（ＩＤｎ）をウィンドウマネージャから取得して、レコードに記録して処理フローを完了する。
【００５５】
一方、リモートトップウィンドウの削除依頼をトップウィンドウＩＤ（ｍｉ−ＩＤｊ）とともに受信した場合（Ｓ９０９）、Ｓ９１０にてトップウィンドウＩＤ（ＩＤｎ）を指定して、リモートトップウィンドウの削除をウィンドウマネージャに命令する。そしてＳ９１１にてリモートトップウィンドウの描画対象領域の管理テーブル５０３からトップウィンドウＩＤ（ｍｉ−ＩＤｊ）に一致するレコード行を削除して処理フローを完了する。
【００５６】
次に、本発明の第１の実施形態の効果について説明する。本発明の第１の実施形態では、画面共有制御部が画面共有システムに参加するコンピュータに導入されており、グローバル座標を共有できるので、異なるコンピュータに接続される表示装置の画像の描画領域に重なる場合に、オフスクリーンバッファに描画された画像データをコピーして、異なるコンピュータに転送することができる。
【００５７】
また、本発明の第１の実施形態では、さらに、送信するＲＧＢの描画情報の他に、アルファブレンディングのマスク画像を送信することで、アルファブレンディングを用いたトップウィンドウとリモートトップウィンドウの画像の合成が可能である。
【００５８】
また、本発明の第１の実施形態では、さらに、転送された画像データは一つのウィンドウとしてリモートデスクトップで扱われるため、マウスによるウィンドウの選択で再描画されたフラグを送信データに含めることで、一つの深度レベル（Z-Order）にて管理が可能となる。
【００５９】
本発明の他の実施形態を図６および図７に示す。図６および図７は、４つの表示装置を物理的に並べて配置した場合の表示装置上のトップウィンドウの表示イメージと、ルートウィンドウｍ０を持つコンピュータの管理テーブルの例を示したものである。
【産業上の利用可能性】
【００６０】
本発明によれば、複数のコンピュータサーバ上でそれぞれ動作するウィンドウアプリケーションの統合管理や統合監視する装置といった用途に適用できる。また、リモートデスクトップ機能の代替機能といった用途や、複数のコンピュータを所有するユーザのデュアルディスプレイ機能の代替機能といった用途にも適用可能である。
【符号の説明】
【００６１】
１００  コンピュータＡ
２００  コンピュータＢ
１０２、２０２  ディスプレイドライバ
１０４、２０４  ルートウィンドウバッファ
１０５、２０５  ウィンドウマネージャ
１０７、２０７、１１１、２１１  オフスクリーンバッファ
１１２、２１２  オフスクリーンバッファブローカ
１１３、２１３  入力装置ブローカ
１１４、２１４  ネットワークインタフェース
１１５、２１５  入力装置ドライバ
１１７、２１７  仮想入力装置ドライバ
１１８、２１８  画面共有制御部
１１９、２１９  管理テーブル
１０３、２０３  ルートウィンドウ
１０６、２０６  トップウィンドウ
１１０、２１０  リモートトップウィンドウ
１０８  描画情報ａ
１０９  描画情報ｂ
２０８  描画情報ｃ
２０９  描画情報ｄ
【図１】
2010244124.tif 000003
【図２】
2010244124.tif 000004
【図３】
2010244124.tif 000005
【図４】
2010244124.tif 000006
【図５】
2010244124.tif 000007
【図６】
2010244124.tif 000008
【図７】
2010244124.tif 000009
【図８】
2010244124.tif 000010
【図９】
2010244124.tif 000011
【図１０】
2010244124.tif 000012
【図１１】
2010244124.tif 000013