(57)【要約】【課題】ウィンドウの描画速度を落とすことなく、オフスクリーンメモリの消費量を削減することができるウィンドウ処理装置を提供する。【解決手段】ウィンドウ更新履歴管理部２１３が管理する履歴情報とウィンドウ情報管理部２１３が管理する管理情報とを用いて、オフスクリーンメモリ削除ウィンドウ決定部２１５が、オフスクリーンメモリを削除するウィンドウを決定し、その削除したウィンドウのイメージを再現するためのリクエストをリクエストキャッシュ部２１８がキャッシュすることで、オフスクリーンメモリの再生成を高速に行うことができる。【選択図】図２
2008293065.tif 000002
【特許請求の範囲】
【請求項１】
ウィンドウに関連付けられたオフスクリーンメモリを制御するウィンドウ処理装置であって、
受け取ったリクエストを、前記ウィンドウのオフスクリーンメモリへのイメージの描画を要求する描画リクエストか、前記ウィンドウのオフスクリーンメモリのイメージを再生成するために必要な再現リクエストかを判断するリクエスト振り分け手段と、
前記再現リクエストを一時的に格納するリクエストキャッシュ手段と、
前記再現リクエストを前記リクエストキャッシュ手段に格納処理するオフスクリーンメモリ再生成手段と、
前記ウィンドウに関連付けられたオフスクリーンメモリを確保するオフスクリーンメモリ管理手段と、
前記描画リクエストに従って、前記ウィンドウに関連づけられたオフスクリーンメモリにイメージを描画する描画手段とを備え、
前記リクエスト振り分け手段は、前記受け取った描画リクエストの対象ウィンドウが既に作成されているウィンドウであり、オフスクリーンメモリがない場合、前記オフスクリーンメモリ再生成手段に再生成を指示し、
前記オフスクリーンメモリ再生成手段は、前記リクエストキャッシュ手段に格納されている再現リクエストを用いて、オフスクリーンメモリの再度確保を前記オフスクリーンメモリ管理手段に指示し、再度確保されたオフスクリーンメモリのイメージ再描画を前記描画手段に指示することを特徴とするウィンドウ処理装置。
【請求項２】
既に作成されているウィンドウのオフスクリーンメモリの有無を示すオフスクリーン状態を少なくとも含む管理情報を管理するウィンドウ情報管理手段を備え、
前記リクエスト振り分け手段は、前記ウィンドウ情報管理手段が管理している前記管理情報を用いて、前記受け取った描画リクエストの対象ウィンドウが既に作成されているウィンドウであり、オフスクリーンメモリがないことを判断することを特徴とする請求項１記載のウィンドウ処理装置。
【請求項３】
前記描画リクエストを受信した時刻情報を更新時刻として含む履歴情報を管理するウィンドウ更新履歴管理手段と、
前記履歴情報と、前記管理情報とを用いて、オフスクリーンメモリの削除対象のウィンドウを決定するオフスクリーンメモリ削除ウィンドウ決定手段と、
前記オフスクリーンメモリ削除ウィンドウ決定手段が決定した前記ウィンドウを用いる
アプリケーションに対し、前記決定したウィンドウに関連付けられたオフスクリーンメモリの削除を通知するオフスクリーンメモリ削除イベント通知手段とを備え、
前記オフスクリーンメモリ管理手段は、前記オフスクリーンメモリ削除ウィンドウ決定手段が決定した前記ウィンドウに関連付けられたオフスクリーンメモリの削除を行うことを特徴とする請求項２記載のウィンドウ処理装置。
【請求項４】
前記オフスクリーンメモリ削除ウィンドウ決定手段は、前記履歴情報を用いて、最も更新時刻が古いウィンドウをオフスクリーンメモリの削除対象のウィンドウと決定することを特徴とする請求項３記載のウィンドウ処理装置。
【請求項５】
前記オフスクリーンメモリ削除ウィンドウ決定手段は、前記履歴情報を用いて、一定期間より更新時刻が古いウィンドウをオフスクリーンメモリの削除対象のウィンドウと決定することを特徴とする請求項３記載のウィンドウ処理装置。
【請求項６】
前記管理情報は、ウィンドウのサイズ情報を含み、
前記オフスクリーンメモリ削除ウィンドウ決定手段は、前記履歴情報を用いて、特定の時刻よりも更新時刻が古いウィンドウを一つ以上抽出し、前記管理情報のサイズ情報を用いて、前記抽出したウィンドウのうち、最もサイズの大きなウィンドウをオフスクリーンメモリの削除対象のウィンドウと決定することを特徴とする請求項３記載のウィンドウ処理装置。
【請求項７】
前記管理情報は、ウィンドウのサイズ情報を含み、
前記オフスクリーンメモリ削除ウィンドウ決定手段は、前記履歴情報を用いて、特定の時刻よりも更新時刻が古いウィンドウを一つ以上抽出し、前記管理情報のサイズ情報を用いて、前記抽出したウィンドウのうち、特定のサイズより大きなウィンドウをオフスクリーンメモリの削除対象のウィンドウと決定することを特徴とする請求項３記載のウィンドウ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報機器において、複数のウィンドウを用いたグラフィカル・ユーザ・インターフェース（以降ＧＵＩと略す）のオフスクリーンメモリの制御に関し、特に、オフスクリーンメモリ量の削減を制御するウィンドウ処理装置に関するものである。
【背景技術】
【０００２】
従来、パソコンやワークステーション、携帯電話等のデジタル家電機器などの情報処理装置において、複数の表示画面を同時に表示する場合には、ＣＲＴや液晶に代表される表示装置に、複数のウィンドウと呼ばれる矩形領域を、ときには重ね合わせながら表示させることで実現している。このようなマルチウィンドウ型のＧＵＩが現在主流となっている。
【０００３】
昨今はグラフィック技術が向上し、上述のマルチウィンドウ型ＧＵＩに３Ｄ（３次元）グラフィック技術を応用して、複数のウィンドウを３Ｄ的に表示することで鳥瞰性を高めたり、ウィンドウが現れたり消えたりするときにウィンドウの形状が３Ｄ的にアニメーションしながら動いたりするようなＧＵＩが現れ始めており、今後、このような３Ｄ型のＧＵＩが主流になる傾向にある。
【０００４】
このような３Ｄ型のＧＵＩにおいて、通常、ウィンドウを３Ｄグラフィックとして表示する場合は、ウィンドウの２次元イメージを一度オフスクリーンメモリと呼ばれるメモリ領域に描画した後、このオフスクリーンメモリ上のイメージを、例えば斜めから見たときのイメージや、特殊な形状に変化しているようなイメージのように、３Ｄグラフィックとして加工してから表示する方法を用いている。
【０００５】
従来のウィンドウ処理装置としては、ＣＲＴや液晶などの表示装置に実際に表示される大きさに合わせてオフスクリーンメモリのサイズを変更するものがあった（例えば、特許文献１参照）。本従来技術では、オフスクリーン描画部が、ハードディスク内の画像を、ＲＡＭ上に確保したオフスクリーンメモリに描画し、ディスプレイ描画部が、オフスクリーンメモリに描画されたイメージを、ユーザが指定した描画倍率に合わせてディスプレイに表示していた。また、拡大・縮小の程度が大きい場合は、オフスクリーンメモリ上のイメージを再生成することで、変動量の大きい拡大や縮小処理による画質の劣化や、極端に表示サイズが小さいときのオフスクリーンメモリ消費量の無駄を抑制することができる。
【特許文献１】特開２００４−１５７４２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、前記従来の構成では、表示装置に表示されるサイズに応じて画質を保つために、表示サイズに比例したオフスクリーンメモリを確保することになり、表示サイズが大きいウィンドウを多く表示するようなＧＵＩを実現する場合、オフスクリーンメモリ量が増加してしまうという課題を有していた。
【０００７】
本発明は、前記従来の課題を解決するもので、すでに表示されており、内容が変更されない、あるいは更新頻度の少ないウィンドウのイメージの、オフスクリーンメモリからの一時的な削除に対し、オフスクリーンメモリから削除したウィンドウのオフスクリーンメモリ上のイメージ（描画内容）を再生成するために必要となる、アプリケーションから送られる再現リクエストをキャッシュしておくことにより、ＧＵＩの表示速度を劣化させることなく、オフスクリーンメモリ消費量を抑えることが可能となるウィンドウ処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
前記従来の課題を解決するために、本発明のウィンドウ処理装置は、ウィンドウに関連付けられたオフスクリーンメモリを制御するウィンドウ処理装置であって、受け取ったリクエストを、前記ウィンドウのオフスクリーンメモリへのイメージの描画を要求する描画リクエストか、前記ウィンドウのオフスクリーンメモリのイメージを再生成するために必要な再現リクエストかを判断するリクエスト振り分け手段と、前記再現リクエストを一時的に格納するリクエストキャッシュ手段と、前記再現リクエストを前記リクエストキャッシュ手段に格納処理するオフスクリーンメモリ再生成手段と、前記ウィンドウに関連付けられたオフスクリーンメモリを確保するオフスクリーンメモリ管理手段と、前記描画リクエストに従って、前記ウィンドウに関連づけられたオフスクリーンメモリにイメージを描画する描画手段とを備え、前記リクエスト振り分け手段は、前記受け取った描画リクエストの対象ウィンドウが既に作成されているウィンドウであり、オフスクリーンメモリがない場合、前記オフスクリーンメモリ再生成手段に再生成を指示し、前記オフスクリーンメモリ再生成手段は、前記リクエストキャッシュ手段に格納されている再現リクエストを用いて、オフスクリーンメモリの再度確保を前記オフスクリーンメモリ管理手段に指示し、再度確保されたオフスクリーンメモリのイメージ再描画を前記描画手段に指示することを特徴とする。
【０００９】
本構成によって、内容が変更されない、あるいは更新頻度の少ないウィンドウのイメージを、オフスクリーンメモリから削除した際に、オフスクリーンメモリから削除したウィンドウの描画内容を再現するために必要となる、アプリケーションから送られる再現リクエストをキャッシュしておくことにより、オフスクリーンメモリ上のイメージを削除したウィンドウを再現することができ、さらに、オフスクリーンメモリ上のイメージを削除したウィンドウの描画・表示の速度の劣化を防ぐことができる。
【発明の効果】
【００１０】
本発明のウィンドウ処理装置によれば、３Ｄ型のＧＵＩのように、ウィンドウ毎にオフスクリーンメモリを確保するような場合において、すでに表示されており、内容が変更されない、あるいは更新頻度の少ないウィンドウのイメージの、オフスクリーンメモリからの一時的な削除に対し、次に該当ウィンドウの内容を再現、または更新する際のオフスクリーンメモリ上のイメージを再生成する処理を高速に実施することができる。これにより、処理速度を落とすことなく、メモリ消費量を削減することができる。
【発明を実施するための最良の形態】
【００１１】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００１２】
図１は、本願発明の実施の形態におけるウィンドウ処理装置を備えた情報処理装置の構成を示すハードウェア構成図である。情報処理装置としては、例えば、携帯電話やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）、デジタルカメラ、携帯オーディオプレイヤーなどのメモリ量やＣＰＵ性能などのハードウェアの制約が厳しい組み込み機器などである。
【００１３】
情報処理装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央演算処理部）１０１、メモリ装置１０４、表示装置１０６、入力装置１０７を備えている。これらの各構成要素は、内部バス１１０を通じて互いに接続されている。また、必要に応じて、内部バス１１０には、ハードディスク装置１０５や通信装置１０８、周辺装置１０９を接続することが可能である。周辺装置１０９としては、例えば、スピーカー装置、カメラ装置、ＳＤカードデバイスなどの記憶媒体リーダーライタ装置などである。
【００１４】
ＣＰＵ１０１は、メモリ１０４に格納されているプログラムを読み出し実行する。
【００１５】
メモリ装置１０４は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３を備えている。ＲＯＭ１０２は、ＣＰＵ１０１で実行するプログラムを記憶している。プログラムは、ハードディスク装置１０５に記憶させることもできる。ＣＰＵ１０１は、ＲＯＭ１０２又はハードディスク装置１０５が格納するプログラムを、必要に応じてＲＡＭ１０３に書き込み、そのプログラムが規定する処理を実行する。ＲＡＭ１０３は、ＣＰＵ１０１が処理を実行するのに伴って発生するデータを一時的に記憶する媒体として機能する。特に、本実施の形態において、ＲＡＭ１０３は、オフスクリーンメモリとして使用するメモリ領域であり、一つ以上のウィンドウのイメージが格納されることになる。また、ＲＯＭ１０２には、フラッシュＲＯＭのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリや記憶媒体も含まれる。ＲＡＭ１０３には、電源を切ると記憶内容が保持されない揮発性のメモリや記憶媒体が含まれる。
【００１６】
ハードディスク装置１０５は、プログラム或いはデータを書き込み及び読み出す装置である。
【００１７】
表示装置１０６は、データや画像等を表示するディスプレイである。例えば、ＣＲＴやＬＣＤ（Ｌｉｇｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ；液晶表示装置）である。本実施の形態におけるウィンドウ処理装置は、この表示装置１０６にウィンドウを表示する際のオフスクリーンメモリの制御に関している。
【００１８】
入力装置１０７は、ユーザの操作によりデータ等を入力する装置であり、例えば、ＰＤＡに配列されたキーボード、携帯電話機に配列された入力ボタン、或いは着脱自在のマウス、キーボードなどである。また、マイクなどの音声入力機器などであってもよい。
【００１９】
通信装置１０８は、電話回線やネットワーク回線や無線や赤外線通信等の通信回線を介して、外部の機器とデータの交換を行う装置である。
【００２０】
本実施の形態におけるウィンドウ処理装置は、ＲＯＭ１０２に格納されているプログラムをＣＰＵ１０１で実行することで、ＲＡＭ１０３上のオフスクリーンメモリとして使用されるメモリ領域の削減を制御することができる。なお、本実施の形態におけるウィンドウ処理装置は、ＣＰＵ１０１及びメモリ装置１０４を単一の半導体基板に作り込んだＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）等の集積回路として構成されてもよい。
【００２１】
図２は、本発明の実施の形態におけるウィンドウ処理装置を備えた情報処理装置の構成の一例を示すブロック図である。
【００２２】
図２において、情報処理装置は、アプリケーション２０４と、ウィンドウ処理装置２００と、表示装置２０１とを備えている。ウィンドウ処理装置２００は、アプリケーション２０４からウィンドウの表示指示を受け取り、必要に応じてオフスクリーンメモリ上に表示対象のウィンドウのイメージを生成し、表示装置２０１に対してオフスクリーン上のイメージの表示を行う。
【００２３】
なお、図２では、ウィンドウ２０２と２０３とを表示装置２０１に表示する例を示しており、また、図２では、一つのアプリケーション２０４のみを図示しているが、複数のアプリケーションが同時に動作し、ウィンドウ処理装置２００は、各アプリケーション２０４からウィンドウの表示指示を受け取る構成でもよい。
【００２４】
以降の説明では、ウィンドウ２０２が、アプリケーション２０４の指示により表示されたものとして説明する。
【００２５】
アプリケーション２０４は、アプリ通信部２０５とリクエスト発行部２１７とを備えている。
【００２６】
リクエスト発行部２１７は、アプリケーション２０４がウィンドウの表示指示を行う際に、表示対象のウィンドウを描画するために必要な一つ以上のリクエストを発行する機能を有している。また、ウィンドウ処理装置２００からオフスクリーンメモリ削除イベントを受信した際、このイベントに関連するウィンドウのイメージをオフスクリーンメモリに描画するために必要なリクエストを発行する機能を有している。
【００２７】
アプリ通信部２０５は、アプリケーション２０４とウィンドウ処理装置２００とのリクエストおよびイベントの送受信を制御する処理部である。具体的には、リクエスト発行部２１７から受け取ったウィンドウ２０２を描画するためのリクエストをウィンドウ処理装置２００に送信する、もしくは、ウィンドウ処理装置２００から通知されるイベントを受信する機能を有する。
【００２８】
リクエストとは、アプリケーション２０４から、ウィンドウ処理装置２００に対して送信する情報であり、ウィンドウを作成・破棄したり、既存のウィンドウに対してグラフィックを描画したりするための命令である。
【００２９】
図３を用いて、リクエストに関して詳しく説明する。３０１は、リクエストの書式を表形式で模式化した、リクエスト模式表である。リクエスト模式表３０１において、１行が一つのリクエストを表すものとする。リクエストは、少なくともリクエスト種別と、リクエストに従って操作を行う対象を示すウィンドウ識別子とを含む。リクエスト模式表３０１においては、ＭａｐＷｉｎｄｏｗ（ウィンドウ配置リクエスト）、ＤｒａｗＣｉｒｌｃｅ（円弧描画リクエスト）が連続している様を示しており、操作対象となるウィンドウのウィンドウ識別子として２０２を指定している。
【００３０】
なお、リクエストには、リクエストを要求するアプリケーションを識別するためのアプリケーション識別子や、処理の優先順序を示す優先度など、他の情報を含んでいてもよい。
【００３１】
イベントとは、ウィンドウ処理装置２００から、アプリケーション２０４に対して送信する情報であり、作成済みのウィンドウの状態が変更された場合に通知されるものである。ウィンドウの状態の変更とは、ウィンドウを操作することにより表示位置が移動されたり、他のウィンドウに覆われたり、他のウィンドウが非表示や移動することで表示画面上に現れたり、情報処理装置の形状が変化することで（折りたたみやフラップを開閉するなど）表示画面が現れることでウィンドウが表示されたり、キーが押されたり等を意味している。
【００３２】
図４を用いて、イベントに関して詳しく説明する。４０１は、イベントの書式を表形式で模式化した、イベント模式表である。イベント模式表４０１において、１行が一つのイベントを表すものとする。イベントもまた、少なくともイベント種別と、イベントが関連するウィンドウを示すウィンドウ識別子とを含む。イベント模式表４０１においては、ＭａｐＮｏｔｉｆｙ（ウィンドウ配置通知）、Ｅｘｐｏｓｅ（ウィンドウ露出通知）が連続している様を示しており、イベントが関連するウィンドウのウィンドウ識別子として２０２を指定している。
【００３３】
なお、イベントには、イベントを通知するアプリケーションを識別するためのアプリケーション識別子や、イベントの優先順序を示す優先度など、他の情報を含んでいてもよい。
【００３４】
ウィンドウ処理装置２００は、通信部２０６と、リクエスト振り分け部２０７と、オフスクリーンメモリ管理部２０８と、描画部２１１と、表示部２１２と、ウィンドウ更新履歴管理部２１３と、ウィンドウ情報管理部２１４と、オフスクリーンメモリ削除ウィンドウ決定部２１５と、オフスクリーンメモリ削除イベント通知部２１６と、リクエストキャッシュ部２１８と、オフスクリーンメモリ再生成部２１９と、ウィンドウ描画部２２０を備えている。また、２０９及び２１０は、それぞれ、ウィンドウ２０２及び２０３に関連づけられたオフスクリーンメモリ上のイメージである。
【００３５】
通信部２０６は、アプリケーション２０４とウィンドウ処理装置２００とのリクエストおよびイベントの送受信を制御する処理部である。具体的には、アプリケーション２０４からのリクエストを受信する、もしくはアプリケーション２０４へのイベントを送信する機能を有する。また、通信部２０６は、受信したリクエストを、リクエスト振り分け部２０７に通知する。
【００３６】
リクエスト振り分け部２０７は、通信部２０６が受信したアプリケーション２０４からのリクエストを受け取り、リクエスト種別に基づいて処理を振り分ける。また、リクエスト振り分け部２０７は、受け取ったリクエストに基づいて、ウィンドウ更新履歴管理部２１３とウィンドウ情報管理部２１４に格納されている情報の更新を行う。
【００３７】
オフスクリーンメモリ管理部２０８は、オフスクリーンメモリ削除ウィンドウ決定部２１５またはオフスクリーンメモリ再生成部２１９からの指示を受け、ウィンドウのイメージを描画するためのオフスクリーンメモリを確保・解放を行う。
【００３８】
２０９及び２１０は、それぞれ、ウィンドウ２０２及び２０３に関連づけられた、オフスクリーンメモリ管理部２０８が確保したオフスクリーンメモリ上のイメージ（描画内容）である。
【００３９】
ウィンドウ描画部２２０は、リクエスト振り分け部２０７から、ウィンドウの描画を行うためのウィンドウ描画指示があれば、オフスクリーンメモリに対してウィンドウのイメージを描画する。新規ウィンドウの作成や、既に作成されているウィンドウのサイズ変更や移動した際にウィンドウ描画指示が通知される。
【００４０】
描画部２１１は、リクエスト振り分け部２０７から、既に作成されているウィンドウ２０２、２０３に対する描画を行うための描画指示があれば、ウィンドウ２０２、２０３に関連づけられたオフスクリーンメモリ２０９、２１０に対してイメージを描画する。
【００４１】
表示部２１２は、オフスクリーンメモリ上のイメージ２０９、２１０を、ウィンドウ２０２、２０３として表示装置２０１上に表示する。
【００４２】
なお、表示部２１２が表示装置２０１にオフスクリーンメモリのイメージを転送するタイミングは、表示装置２０１の垂直同期信号（ＶＳＹＮＣ）受信毎に毎回実施する方式や、あるいは、アプリケーション２０４や、ウィンドウ処理装置１０７内の別機能ブロックからの指示を受けたときに実施するなど、考えられる方法は複数あるが、ここでは表示部２１２の動作タイミングを限定するものではない。
【００４３】
また、表示部２１２は、オフスクリーンメモリ上のイメージを表示装置２０１に表示する際に、必要に応じて半透明化や拡大縮小処理、色変換、３Ｄ処理などグラフィック処理による加工・変換を施した上で表示するように実現しても良い（一例として、図２において、ウィンドウ２０２、２０３は、オフスクリーンメモリ上のイメージ２０９、２１０を、斜めから見たような３Ｄ表示を行う場合のイメージ図として記述している。）。
【００４４】
ウィンドウ更新履歴管理部２１３は、リクエスト振り分け部２０７から、各リクエストに含まれるウィンドウ識別子と、そのリクエストを通信部２０６が受信した時刻情報を受け取り、ウィンドウ毎に最新の更新時刻を含む履歴情報を管理する。図５に、履歴情報の一例を示している。ここでは、２つのウィンドウ２０２と２０３が作成されており、時刻Ｔ１またはＴ２にウィンドウが更新されたことが示されている。この更新とは、ウィンドウ自身の更新を意味するウィンドウ描画指示が発生した場合と、ウィンドウ内部の描画内容の更新を意味する描画指示が発生した場合の両方を含むものとする。なお、どちらの更新かを判断するための情報を追加してもよいし、また、一方の履歴情報のみを管理してもよい。また、更新時刻全ての履歴情報や、各更新時刻に実施されたリクエストに関する情報をあわせて管理してもよい。
【００４５】
ウィンドウ情報管理部２１４は、ウィンドウ毎にウィンドウの属性や状態に関する情報を管理情報として管理する。ウィンドウが作成・操作・削除される毎に変更されるウィンドウの管理情報を更新する。図６に、管理情報の一例を示している。ここでは、３つのウィンドウ２０２と２０３と２０４が作成されており、各ウィンドウのディスプレイ上での表示位置を示す座標と、各ウィンドウの縦横サイズと、各ウィンドウが表示中か非表示かを示す表示状態と、オフスクリーンメモリ状態とを備えている。ウィンドウの非表示とは、ウィンドウ生成済みであってもアプリケーションからの明示的な指示を受けてディスプレイ上に現れていない状態や、ウィンドウを最小化することでディスプレイ上にウィンドウの内容が表示されていない状態や、複数のウィンドウが重なって背後にあるウィンドウがディスプレイ上に見えない状態などを意味する。オフスクリーンメモリ状態とは、各ウィンドウのオフスクリーンメモリの有無を示す。なお、ウィンドウの重なり順や、ウィンドウを作成したアプリケーション識別子など、ウィンドウに関する情報をあわせて管理してもよい。
【００４６】
オフスクリーンメモリ削除ウィンドウ決定部２１５は、ウィンドウ更新履歴管理部２１３が管理するウィンドウの履歴情報と、ウィンドウ情報管理部２１４が管理するウィンドウの管理情報から、オフスクリーンメモリを削除するウィンドウを決定する。
【００４７】
オフスクリーンメモリ削除イベント通知部２１６は、オフスクリーンメモリ削除ウィンドウ決定部２１５からの指示を受けて、オフスクリーンメモリ削除ウィンドウ決定部２１５が決定したウィンドウを持つアプリケーション２０４に対して、通信部２０６を通じてイベントを通知し、削除対象のウィンドウの描画イメージを構築するために必要となるリクエストの発行を要求する。
【００４８】
リクエストキャッシュ部２１８は、オフスクリーンメモリを削除したウィンドウの描画イメージを構築するためのリクエスト（再現リクエスト）を一時的に格納保持する記憶部である。
【００４９】
オフスクリーンメモリ再生成部２１９は、リクエスト振り分け部２０７が、オフスクリーンメモリが削除されているウィンドウに対するリクエスト（再現リクエストや描画リクエスト）を受け取った場合に、リクエスト振り分け部２０７から指示を受け、再現リクエストのリクエストキャッシュ部２１８への格納や、オフスクリーンメモリ上のイメージの再構築を制御する。
【００５０】
以上により、本発明の実施の形態におけるウィンドウ処理装置は、オフスクリーンメモリ削除ウィンドウ決定部２１５の決定に従い、内容が変更されないあるいは更新頻度の少ないウィンドウのイメージを、オフスクリーンメモリから削除した際に、アプリケーションから送られる再現リクエストをキャッシュしておくことにより、オフスクリーンメモリ上のイメージを削除したウィンドウを再現することが可能となり、オフスクリーンメモリのサイズを減少するとともに、オフスクリーンメモリ上のイメージを削除したウィンドウの描画・表示の速度の劣化を防ぐことができる。
【００５１】
次に、本発明の実施の形態におけるウィンドウ処理装置がアプリケーションからリクエストを受け取った際の動作の一例について、図７を用いて説明する。ウィンドウ処理装置が、初期化処理など完了し、リクエスト振り分け部２０７が通信部２０６からリクエストを受信できる状態になったときに処理を開始する。
【００５２】
リクエスト振り分け部２０７は、通信部２０６からリクエストを受け取るのを待つ（ステップＳ７０１）。
【００５３】
リクエスト振り分け部２０７が通信部２０６からリクエストを受け取ると（ステップＳ７０１が受信）、リクエスト振り分け部２０７は、通信部２０６より受け取ったリクエストのウィンドウ識別子と、該当リクエストを受信した受信時刻情報を、ウィンドウ更新履歴管理部２１３に通知し、ウィンドウ更新履歴管理部２１３は、管理する履歴情報の更新を行う（ステップＳ７０２）。なお、ステップＳ７０２の履歴情報の更新の前に、リクエストを選別する条件を設けていないため、ウィンドウ更新履歴管理部２１３は、受信した全てのリクエストと全てのウィンドウに関して履歴情報を管理しているが、これに限定するものではない。一例として、リクエストの種別や、ウィンドウの種別や状態、ウィンドウの親子関係などによって、特定の条件に合致するか否かの判定を行い、合致する場合のみ、更新（履歴情報の管理）を行ってもよい。
【００５４】
リクエスト振り分け部２０７は、受け取ったリクエストのリクエスト種別に基づいて処理を判断し、再現リクエストか描画リクエストかウィンドウ描画リクエストかの振り分けを行う（ステップＳ７０３）。再現リクエストは、リクエスト発行部２１７が発行するリクエストであり、例えば、リクエスト種別の拡張や、新しい属性値を追加することで識別することが可能となる。なお、リクエスト種別を拡張した場合、再現対象であるリクエスト種別が判断できる必要がある。（例えば、リクエスト種別に「再現ＤｒａｗＣｉｒｃｌｅ」を拡張追加し、再現対象であるリクエスト種別は「ＤｒａｗＣｉｒｃｌｅ」と判断する）描画リクエストは、既に作成されているウィンドウの内容の描画を行うためのリクエストであり、ＭａｐＷｉｎｄｏｗやＤｒａｗＣｉｒｃｌｅなどウインドウの中身として描画される図形やテキストなどの描画が発生した際に描画リクエストが通知される。ウィンドウ描画リクエストは、ウィンドウの描画を行うためのリクエストであり、新規ウィンドウの作成（ＷｉｎｄｏｗＣｒｅａｔｅ）や、既に作成されているウィンドウのサイズ変更（ＷｉｎｄｏｗＲｅｓｉｚｅ）や移動（ＷｉｎｄｏｗＭｏｖｅ）した際にウィンドウ描画リクエストが通知される。
【００５５】
まず、受け取ったリクエストが再現リクエストである場合（ステップＳ７０３が再現リクエスト）について説明する。
【００５６】
リクエスト振り分け部２０７は、オフスクリーンメモリ再生成部２１９に受け取った再現リクエストを通知して、キャッシュ処理を指示する（ステップＳ７１０）。
【００５７】
オフスクリーンメモリ再生成部２１９は、リクエスト振り分け部２０７から通知された再現リクエストを、リクエストキャッシュ部２１８に格納する処理を行い（ステップＳ７１１）、ステップＳ７０１に遷移して、処理を繰り返す。なお、オフスクリーンメモリ再生成部２１９は、格納前に、受け取った再現リクエストを、再現対象のリクエストに変換する処理を行ってもよい。具体的には、リクエスト種別「再現ＤｒａｗＣｉｒｃｌｅ」が通知された場合、リクエスト種別「ＤｒａｗＣｉｒｃｌｅ」に変換して格納することが可能となる。
【００５８】
次に、受け取ったリクエストが描画リクエストである場合（ステップＳ７０３が描画リクエスト）について説明する。
【００５９】
リクエスト振り分け部２０７は、ウィンドウ情報管理部２１４に格納されている管理情報のオフスクリーンメモリ状態を参照し、描画対象のウィンドウのオフスクリーンメモリの有無を判断する（ステップＳ７０４）。
【００６０】
オフスクリーンメモリが有る場合（ステップＳ７０４が有）、ステップＳ７０８に遷移する。一方、オフスクリーンメモリが無い場合（ステップＳ７０４が無）、描画対象のウィンドウのオフスクリーンメモリが削除済みであるため、オフスクリーンメモリの再生処理を行う。リクエスト振り分け部２０７は、ウィンドウ情報管理部２１４に受け取った描画リクエストを通知し、ウィンドウ情報管理部２１４は、管理情報の更新を行う（ステップＳ７０５）。リクエスト振り分け部２０７は、オフスクリーンメモリ再生成部２１９に受け取った描画リクエストを通知して、再生成処理を指示する（ステップＳ７０６）。オフスクリーンメモリ再生成部２１９は、オフスクリーンメモリ管理部２０８に、リクエスト振り分け部２０７から通知された描画リクエストの対象ウィンドウに関連付けられているオフスクリーンメモリを再度確保するよう指示し、オフスクリーンメモリ管理部２１９は、オフスクリーンメモリの確保を行う（ステップＳ７０７）。
【００６１】
オフスクリーンメモリ再生成部２１９またはリクエスト振り分け部２０７は、描画部２１１に、描画を指示する（ステップＳ７０８）。この描画指示は、ステップＳ７０４が無の場合、オフスクリーンメモリ再生成部２１９が、リクエストキャッシュ部２１８にキャッシュされている描画対象のウィンドウに関連する再現リクエストを取得して、描画部２１１に描画を指示し、最後にリクエスト振り分け部２０７から受け取った最新の描画リクエストによる描画指示を描画部２１１に通知する。また、この描画指示は、ステップＳ７０４が有の場合、リクエスト振り分け部２０７が受け取った描画リクエストによる描画指示を描画部２１１に通知する。
【００６２】
描画部２１１は、受け取った描画指示に従い、オフスクリーンメモリに対してイメージを描画し（ステップＳ７０９）、ステップＳ７０１に遷移して、処理を繰り返す。描画部２１１がオフスクリーンメモリに対してイメージを描画することにより、表示部２１２が、オフスクリーンメモリ上のイメージを表示装置２０１上に表示することになる。
【００６３】
最後に、受け取ったリクエストがウィンドウ描画リクエストである場合（ステップＳ７０３がウィンドウ描画リクエスト）について説明する。
【００６４】
リクエスト振り分け部２０７は、ウィンドウ情報管理部２１４に格納されている管理情報のウィンドウ識別子を参照し、描画対象のウィンドウが作成済みか否かを判断する（ステップＳ７２０）。
【００６５】
未作成の場合（ステップＳ７２０が未作成）、ステップＳ７２１に遷移し、新規にウィンドウの作成、描画を行う。リクエスト振り分け部２０７は、ウィンドウ情報管理部２１４に受け取ったウィンドウ描画リクエストを通知し、ウィンドウ情報管理部２１４は、管理情報の更新を行う（ステップＳ７２１）。リクエスト振り分け部２０７は、オフスクリーンメモリ管理部２０８に、新規に作成するウィンドウに関連付けられるオフスクリーンメモリを確保するよう指示し、オフスクリーンメモリ管理部２１９は、オフスクリーンメモリの確保を行う（ステップＳ７２２）。
【００６６】
リクエスト振り分け部２０７は、ウィンドウ描画部２２０に、ウィンドウの描画を支持する（ステップＳ７２３）。
【００６７】
ウィンドウ描画部２２０は、受け取ったウィンドウ描画指示に従い、オフスクリーンメモリに対してウィンドウのイメージを描画し（ステップＳ７２４）、ステップＳ７０１に遷移して、処理を繰り返す。ウィンドウ描画部２２０がオフスクリーンメモリに対してウィンドウのイメージを描画することにより、表示部２１２が、オフスクリーンメモリ上のウィンドウのイメージを表示装置２０１上に表示することになる。
【００６８】
作成済みの場合（ステップＳ７２０が作成済み）、ステップ７２５に遷移し、既に作成されているウィンドウの更新（ウィンドウのサイズ変更や移動など）を行う。リクエスト振り分け部２０７は、ウィンドウ情報管理部２１４に格納されている管理情報のオフスクリーンメモリ状態を参照し、描画対象のウィンドウのオフスクリーンメモリの有無を判断する（ステップＳ７２５）。
【００６９】
オフスクリーンメモリが有る場合（ステップＳ７２５が有）、ステップＳ７２９に遷移する。一方、オフスクリーンメモリが無い場合（ステップＳ７２５が無）、描画対象のウィンドウのオフスクリーンメモリが削除済みであるため、オフスクリーンメモリの再生処理を行う。リクエスト振り分け部２０７は、ウィンドウ情報管理部２１４に受け取ったウィンドウ描画リクエストを通知し、ウィンドウ情報管理部２１４は、管理情報の更新を行う（ステップＳ７２６）。リクエスト振り分け部２０７は、オフスクリーンメモリ再生成部２１９に受け取ったウィンドウ描画リクエストを通知して、再生成処理を指示する（ステップＳ７２７）。オフスクリーンメモリ再生成部２１９は、オフスクリーンメモリ管理部２０８に、リクエスト振り分け部２０７から通知されたウィンドウ描画リクエストの対象ウィンドウに関連付けられているオフスクリーンメモリを再度確保するよう指示し、オフスクリーンメモリ管理部２１９は、オフスクリーンメモリの確保を行う（ステップＳ７２８）。
【００７０】
オフスクリーンメモリ再生成部２１９またはリクエスト振り分け部２０７は、ウィンドウ描画部２２０に、ウィンドウの描画を指示する（ステップＳ７２９）。このウィンドウの描画指示は、ステップＳ７２５が無の場合、オフスクリーンメモリ再生成部２１９が、リクエストキャッシュ部２１８にキャッシュされている描画対象のウィンドウに関連する再現リクエストを取得して、ウィンドウ描画部２２０にウィンドウの描画を指示し、最後にリクエスト振り分け部２０７から受け取った最新のウィンドウ描画リクエストによるウィンドウの描画指示をウィンドウ描画部２２０に通知する。また、このウィンドウの描画指示は、ステップＳ７２５が有の場合、リクエスト振り分け部２０７が受け取ったウィンドウ描画リクエストによるウィンドウの描画指示をウィンドウ描画部２２０に通知する。
【００７１】
オフスクリーンメモリ再生成部２１９は、描画部２１１に、描画を指示する（ステップＳ７３０）。この描画指示は、ステップＳ７２５が無の場合、オフスクリーンメモリ再生成部２１９が、リクエストキャッシュ部２１８にキャッシュされている描画対象のウィンドウに関連する再現リクエストを取得して、描画部２１１に描画指示を通知する。また、ステップＳ７２５が有の場合、描画部２１１に通知するキャッシュされている描画対象の再現リクエストが存在しないため、特に処理は行わないものとする。
【００７２】
ウィンドウ描画部２２０は、受け取ったウィンドウ描画指示に従い、オフスクリーンメモリに対してウィンドウのイメージを描画し、描画部２１１は、受け取った描画指示に従い、オフスクリーンメモリに対してイメージを描画し（ステップＳ７３１）、ステップＳ７０１に遷移して、処理を繰り返す。ウィンドウ描画部２２０または描画部２１１がオフスクリーンメモリに対してイメージを描画することにより、表示部２１２が、オフスクリーンメモリ上のイメージを表示装置２０１上に表示することになる。
【００７３】
以上により、本発明の実施の形態におけるウィンドウ処理装置は、作成済みのウィンドウのイメージをオフスクリーンメモリから削除した際に、アプリケーションから送られる再現リクエストをキャッシュしておくことにより、オフスクリーンメモリ上のイメージを削除したウィンドウを再現することが可能となり、オフスクリーンメモリのサイズを減少するとともに、オフスクリーンメモリ上のイメージを削除したウィンドウの再度の描画・表示の速度の劣化を防ぐことができる。
【００７４】
次に、本発明の実施の形態におけるウィンドウ処理装置がオフスクリーンメモリ削除処理について、図８を用いて説明する。なお、オフスクリーンメモリ削除処理は、ウィンドウ処理装置１０７がアイドル状態になったときや、システムの消費メモリ量が閾値を超えたときに開始するものとする。また、これに限らず、バックグラウンド処理などで、常に動作をし続けるようにしてもよい。
【００７５】
オフスクリーンメモリ削除ウィンドウ決定部２１５は、ウィンドウ更新履歴部２１３から、履歴情報を取得する（ステップＳ８０１）。
【００７６】
オフスクリーンメモリ削除ウィンドウ決定部２１５は、ウィンドウ情報管理部２１４から、管理情報を取得する（ステップＳ８０２）。
【００７７】
オフスクリーンメモリ削除ウィンドウ決定部２１５は、取得した履歴情報を用いて、特定の条件に合致するウィンドウのウィンドウ識別子を抽出する（ステップＳ８０３）。なお、特定の条件に合致するウィンドウとは、例えば、履歴情報の最終更新時刻が最も古いウィンドウであるものとする。また、最終更新時刻が特定の時刻より古いウィンドウでもよいし、一定時間以上更新されていないウィンドウでもよい。これにより、ユーザにより操作されたばかりのウィンドウや、頻繁に更新を繰り返すウィンドウを削除対象から除くことが可能となる。
【００７８】
オフスクリーンメモリ削除ウィンドウ決定部２１５は、取得した管理情報と、ステップＳ８０３で抽出したウィンドウ識別子から、削除対称のウィンドウを決定する（ステップＳ８０４）。一例として、管理情報のサイズを用いて、特定のサイズより大きいウィンドウのオフスクリーンメモリを削除するウィンドウとして決定する。なお、ステップＳ８０３において抽出したウィンドウ全てを、オフスクリーンメモリを削除する対象として決定するようにしてもよい。また、例えば、管理情報の表示状態を用いて、表示されていないウィンドウに決定するなどしてもよい。
【００７９】
オフスクリーンメモリ削除ウィンドウ決定部２１５は、決定した削除対象のウィンドウのオフスクリーンメモリを削除するよう、オフスクリーンメモリ管理部２０８に指示し、オフスクリーンメモリ管理部２０８は、指示されたオフスクリーンメモリの削除処理を行う（ステップＳ８０５）。
【００８０】
オフスクリーンメモリ削除ウィンドウ決定部２１５は、オフスクリーンメモリ削除イベント通知部２１６に、オフスクリーンメモリの削除を通知し、オフスクリーンメモリ削除イベント通知部２１６は、通知部２１６を介してアプリケーション２０４に削除したオフスクリーンメモリに対応する再現リクエストの発行を要求する（ステップＳ８０６）。
【００８１】
なお、オフスクリーンメモリ削除イベント通知部２１６がアプリケーション２０４に通知するイベントは、オフスクリーンメモリを削除したことを通知する特別なイベントとしてもよいし、従来のウィンドウ処理装置１０７が備えている、Ｅｘｐｏｓｅ（露出）イベントを用いても良い。Ｅｘｐｏｓｅイベントは、今まで非表示になっていたか、もしくは他のウィンドウによりおおわれていたため、見えていなかったウィンドウが、見える形で現れた（露出した）場合に発生する。Ｅｘｐｏｓｅイベントは、従来のウィンドウ処理装置１０７が備えているイベントであり、これをオフスクリーンメモリ削除ウィンドウ決定部２１５が意図的に発生するようにすれば、アプリケーション２０４との間のイベントの拡張を施さなくても本発明の効果を実現できることになる。
【００８２】
また、ウィンドウ処理装置１０７とアプリケーション２０４の間は、プロセス間通信や、場合によっては、ネットワークで結合されたコンピュータ間の通信が介在するために、アプリケーション２０４からのリクエスト処理や、アプリケーション２０４へのイベント通知は遅延が発生する可能性がある。しかし、本発明の実施の形態に示した構成により、オフスクリーンメモリを削除していても、そのオフスクリーンメモリを元の状態に戻すためのリクエストを事前にキャッシュしておき、オフスクリーンメモリを元に戻すときの、通信処理によるアプリケーション２０４からのリクエスト処理を省くことができるため、消費メモリの削減を、ウィンドウ処理速度を落とすことなく実現することができる。特に、ＣＰＵ性能の制約が厳しい携帯電話のような組み込み機器において、有効である。
【００８３】
また、携帯電話のような組み込み機器において、オフスクリーンメモリを確保するためのＲＡＭの総量が少ない場合でも、速度を落とすことなく、メモリ消費量を削減することができる。また、携帯電話のような組み込み機器において、未使用のＲＡＭデバイスの電源を部分的にＯＦＦするようことで省電力を行う機能が実装されている場合、オフスクリーンメモリを削除することで、使用中のメモリ容量を削減することが可能となり、省電力効率を更に高めることが可能となる。
【００８４】
以上により、本発明のウィンドウ処理装置によれば、３Ｄ型のＧＵＩのように、ウィンドウ毎にオフスクリーンメモリを確保するような場合において、すでに表示されており、内容が変更されない、あるいは更新頻度の少ないウィンドウのイメージの、オフスクリーンメモリからの一時的な削除に対し、次に該当ウィンドウの内容を再現、または更新する際のオフスクリーンメモリ上のイメージを再生成する処理を高速に実施することができる。これにより、処理速度を落とすことなく、メモリ消費量を削減することができる。
【産業上の利用可能性】
【００８５】
本発明にかかるウィンドウ処理装置は、削除したオフスクリーンメモリを再生成するためのイベントをキャッシュする機能を有し、携帯電話等、メモリ量やＣＰＵ性能などのハードウェアの制約が厳しい組み込み機器において有用である。
【図面の簡単な説明】
【００８６】
【図１】本発明の実施の形態におけるウィンドウ処理装置を備えた情報処理装置のハードウェア構成を示す図
【図２】本発明の実施の形態におけるウィンドウ処理装置を備えた情報処理装置の構成の構成の一例を示すブロック図
【図３】本発明の実施の形態におけるリクエストの一例を示した図
【図４】本発明の実施の形態におけるイベントの一例を示した図
【図５】本発明の実施の形態におけるウィンドウ更新履歴管理部が管理する履歴情報の一例を示した図
【図６】本発明の実施の形態におけるウィンドウ情報管理部が管理する管理情報の一例を示した図
【図７】本発明の実施の形態におけるウィンドウ処理装置がリクエストを受け取った際の動作の一例を示すフローチャート
【図８】本発明の実施の形態におけるウィンドウ処理装置がオフスクリーンメモリの削除動作の一例を示すフローチャート
【符号の説明】
【００８７】
１０１    ＣＰＵ
１０２    ＲＯＭ
１０３    ＲＡＭ
１０４    メモリ
１０５    ＨＤＤ
１０６    表示装置
１０７    入力装置
１０８    通信装置
１０９    周辺装置
１１０    データバス
２００    ウィンドウ処理装置
２０１    表示装置
２０２，２０３    ウィンドウ
２０４    アプリケーション
２０５    アプリ通信部
２０６    通信部
２０７    リクエスト振り分け部
２０８    オフスクリーンメモリ管理部
２０９，２１０    オフスクリーンメモリ
２１１    描画部
２１２    表示部
２１３    ウィンドウ更新履歴管理部
２１４    ウィンドウ情報管理部
２１５    オフスクリーンメモリ削除ウィンドウ決定部
２１６    オフスクリーンメモリ削除イベント通知部
２１７    リクエスト発行部
２１８    リクエストキャッシュ部
２１９    オフスクリーンメモリ再生成部
２２０    ウィンドウ描画部
【図１】
2008293065.tif 000003
【図２】
2008293065.tif 000004
【図３】
2008293065.tif 000005
【図４】
2008293065.tif 000006
【図５】
2008293065.tif 000007
【図６】
2008293065.tif 000008
【図７】
2008293065.tif 000009
【図８】
2008293065.tif 000010