JP2013546043A - 即時リモートレンダリング - Google Patents
即時リモートレンダリング Download PDFInfo
- Publication number
- JP2013546043A JP2013546043A JP2013531827A JP2013531827A JP2013546043A JP 2013546043 A JP2013546043 A JP 2013546043A JP 2013531827 A JP2013531827 A JP 2013531827A JP 2013531827 A JP2013531827 A JP 2013531827A JP 2013546043 A JP2013546043 A JP 2013546043A
- Authority
- JP
- Japan
- Prior art keywords
- application
- operating system
- graphics
- mobile
- memory location
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1423—Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1454—Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/14—Display of multiple viewports
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/395—Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/399—Control of the bit-mapped memory using two or more bit-mapped memories, the operations of which are switched in time, e.g. ping-pong buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
- Digital Computer Display Output (AREA)
- Telephonic Communication Services (AREA)
- Information Transfer Between Computers (AREA)
Abstract
仮想化されることなく共有カーネル上で同時に独立して動作するモバイルオペレーティングシステムとデスクトップオペレーティングシステムを有するモバイルコンピューティングデバイス。デスクトップオペレーティングシステムの環境の中で、モバイルオペレーティングシステムにおいて動作中のアプリケーションをリアルタイムで、または即時に表示することは、デスクトップオペレーティングシステムの中でそのアプリケーションに関するアプリケーショングラフィクスをレンダリングすることによって実現される。デスクトップオペレーティングシステムのコンソールアプリケーションは、共有メモリからそのアプリケーションに関するサーフェス情報にアクセスし、そのアプリケーションを、デスクトップオペレーティングシステムに関連するコンピューティング環境のコンソールウィンドウの中にレンダリングすることができる。
Description
本願は、概して、モバイルコンピューティング環境の分野、より詳しくは、1つのモバイルコンピューティングデバイスにおいて複数のオペレーティングシステムの使用を通じた複数のユーザ環境をサポートすることに関する。
モバイルコンピューティングデバイスは、今日の社会において遍在化しつつある。例えば、2008年末の時点で、米国人の90パーセントがモバイル無線デバイスを有していた。同時に、モバイルデバイスの能力は急速に進化しており、その一例が、携帯電話機能とともに高度なコンピュータ機能も備えたスマートフォンである。モバイルプロバイダは、過去3年間に数種類のプラットフォームに基づく何百機種もの新型スマートフォンを発売した(例えば、Apple iPhone、Android、BlackBerry、Palm、Windows Mobile)。米国では、スマートフォンの普及率は2010年半ばまでに23%近くに到達し、ある年齢層では35%を超えた。欧州では、スマートフォン市場は2009年から2010年の間に41%成長し、2010年7月現在、欧州主要5カ国だけでも加入件数は6,000万件以上に上った。
スマートフォンはますます人気を博し、コンピューティング能力も向上しつつあるが、それによって提供されるユーザ体験は限定的である。具体的には、これらは一般にモバイルデバイスのハードウェア用に変更されたオペレーティングシステムを搭載しており、変更されたオペレーティングシステムでは限られた数のアプリケーションしか利用できない。例えば、多くのスマートフォンはGoogleのAndroidオペレーティングシステムを実行する。Androidが実行できるのは、Javaベースの仮想マシンランタイム環境内で動作するように特に開発されたアプリケーションだけである。これに加えて、Androidは変更されたLinuxカーネルに基づいているものの、Linuxとは異なる規格のCライブラリ、システムマネージャ及びサービスを使用する。従って、Linux用に書かれたアプリケーションは、変更またはポートしないかぎり、Androidでは動作しない。同様に、AppleのiPhoneではiOSモバイルオペレーティングシステムが採用されている。この場合も、iOSはMac OS Xから派生しているが、OS X用に開発されたアプリケーションはiOSでは動作しない。そのため、AndroidやiOS等のモバイルオペレーティングシステムには多くのアプリケーションを利用できるが、LinuxやMac OS X等、デスクトップオペレーティングシステム用の他の多数の一般的なアプリケーションは、モバイルプラットフォームでは利用できない。
従って、スマートフォンは一般に、限られた数のユーザ体験に適し、主にモバイル環境用に設計されたアプリケーションを提供する。特に、スマートフォンは、適当なデスクトップユーザ体験を提供せず、また、一般的なデスクトップアプリケーションを実行しない。その結果、多くのユーザはスマートフォン、ラップトップ、及び/またはタブレットコンピュータ等、複数のコンピューティングデバイスを持ち、使用する。この場合、デバイスごとにCPU、メモリ、ファイル記憶装置及びオペレーティングシステムが異なる。
スマートフォンと他のコンピューティングデバイスの間の接続とファイル共有を可能にするには、1つのデバイス(例えば、モバイルOSを実行するスマートフォン)を第二の、完全に異種のデバイス(例えば、デスクトップOSを実行するノートブック、デスクトップ、またはタブレット)に無線または有線接続を通じて連結する。情報はデバイス間で、各デバイスで別々に動作するアプリケーション間でデータを同期させることによって共有される。このプロセスは一般に「同期」と呼ばれ、面倒であり、通常、ユーザによる積極的な管理が必要となる。
本発明の実施形態は、1つのモバイルコンピューティングデバイスにおいて、スマートフォンのモバイルコンピューティング体験と第二の端末環境の適切なユーザ体験を提供することに関する。第二の端末環境は、有線(例えば、USB、Firewire、Thunderbolt等)または無線(例えば、Bluetooth、WiFi等)接続によりコンピューティングデバイスに接続された視覚的レンダリングデバイス(例えば、モニタやディスプレイ)、入力デバイス(例えば、マウス、タッチパッド、タッチスクリーン、キーボード等)、及びその他のコンピューティング周辺機器(例えば、HDD、光ディスクドライブ、メモリスティック、カメラ、プリンタ等)のいくつかの組合せであってもよい。実施形態では、モバイル環境のユーザ体験に関連するモバイルオペレーティングシステムと第二の端末環境のユーザ体験に関連するデスクトップオペレーティングシステムが、共有カーネル上で同時に独立して動作する。
各種の実施形態と適合する1つの態様によれば、どちらも第一のオペレーティングシステムのためにコンパイルされ、その中でアクティブに同時動作中の第一と第二のアプリケーションに関するアプリーショングラフィクスは、第一のオペレーティングシステムを使って第一のアプリケーションのサーフェスの更新を計算するステップと、第一のオペレーティングシステムを使って第一のアプリケーションの更新後のサーフェスをレンダリングして、第一のメモリ位置に第一のグラフィクスフレームを生成するステップと、第一のオペレーティングシステムを使って第二のアプリケーションのサーフェスの更新を計算するステップと、第二のアプリケーションの更新後のサーフェスを第二のメモリ位置に格納するステップであって、第二のメモリ位置が、共有のカーネル上で同時動作中の第一のオペレーティングシステムと第二のオペレーティングシステムの両方によりアクセス可能な共有のメモリ位置であるようなステップと、第二のオペレーティングシステムのコンソールアプリケーションを使って第二のアプリケーションの更新後のサーフェスをレンダリングして、第二のグラフィクスフレームを第三のメモリ位置に生成するステップと、を含むステップを繰り返し実行することによって維持される。
各種の実施形態と適合する他の態様によれば、第一のグラフィクスフレームは、第一のメモリ位置から第一のオペレーティングシステムに関連する第一のコンピューティング環境のディスプレイに表示されてもよく、第二のグラフィクスフレームは、第三のメモリ位置から第二のオペレーティングシステムに関連する第二のコンピューティング環境のディスプレイに表示されてもよい。第二のグラフィクスフレームは、第三のメモリ位置から、コンソールアプリケーションを介して第二のオペレーティングシステムに関連する第二のコンピューティング環境のディスプレイに表示されてもよい。コンソールアプリケーションは、更新後のサーフェスが第二のメモリ位置において利用可能であることを示す描画通知を受け取ってもよい。描画通知を受け取るステップは、第二のメモリ位置のファイル記述子を受け取るステップを含んでいてもよい。描画通知は、プロセス間通信チャネルを通じて受け取られてもよい。この方法は、ファイル記述子をコンソールアプリケーションのプロセス空間にマッピングすることによって第二のメモリ位置の参照を受け取るステップ及び/または、その参照を通じて第二のメモリ位置を読み出し、第二のアプリケーションの更新後のサーフェスをレンダリングするステップを含んでいてもよい。
各種の実施形態に適合する他の態様によれば、この方法は、コンソールアプリケーションの中にレンダラオブジェクトのインスタンスを作成するステップと、第一のオペレーティングシステムのグラフィクスサーバに、そのレンダラオブジェクトのリモート処理可能なインタフェースを登録して、第一のアプリケーションのサーフェスに関する描画通知を受け取るステップを含んでいてもよい。第一のオペレーティングシステムはモバイルオペレーティングシステムであってもよく、第二のオペレーティングシステムはデスクトップオペレーティングシステムであってもよい。第二のアプリケーションは、第二のオペレーティングシステムのグラフィクスサーバと非互換的であってもよい。第二のアプリケーションはAndroid用アプリケーションであってもよく、第二のオペレーティングシステムのグラフィクスサーバはXウィンドウのグラフィクスサーバであってもよい。第二のアプリケーションの更新後のサーフェスをレンダリングするステップは、層の重なり順によって更新後のサーフェスを合成するステップを含んでいてもよい。
各種の実施形態に適合する他の態様によれば、モバイルコンピューティングデバイスは、第一のオペレーティングシステム内でアクティブに同時動作中の第一のアプリケーションと第二のアプリケーションを含む。第一のグラフィクスサーフェスは第一のアプリケーションに関連付けられ、第一のオペレーティングシステムのグラフィクスサーバは、第一のグラフィクスサーフェスをレンダリングして、第一のグラフィクスフレームを第一のメモリ位置に生成するように動作可能である。第二のグラフィクスサーフェスは第二のアプリケーションに関連付けられ、第二のグラフィクスサーフェスは第二のメモリ位置に格納され、第二のメモリ位置は、共有のカーネル上で同時動作中の第一のオペレーティングシステムと第二のオペレーティングシステムの両方によりアクセス可能な共有メモリ位置である。コンソールアプリケーションは第二のオペレーティングシステム内で動作し、このコンソールアプリケーションは、第二のグラフィクスサーフェスをレンダリングして、第二のグラフィクスフレームを第三のメモリ位置に生成するように動作可能である。
各種の実施形態に適合する他の態様によれば、レンダラオブジェクトのインスタンスがコンソールアプリケーションによって作成され、これには、第二のグラフィクスサーフェスをレンダリングして第二のグラフィクスフレームを生成するためのリモート処理可能なメソッドが含まれる。コンソールアプリケーションは、第一のオペレーティングシステムのグラフィクスサーバから、第二のグラフィクスサーフェスが更新されたことを示す描画通知を受け取ってもよい。第二のオペレーティングシステムのグラフィクスサーバは、Xウィンドウ型のグラフィクスサーバであってもよく、第二のアプリケーションは、第二のオペレーティングシステムのXウィンドウ型のグラフィクスサーバと非互換的な第一のオペレーティングシステムのグラフィクスライブラリを使用してもよい。
本発明の実施形態が図面の参照図に示されており、図の説明全体を通じて、同様の参照番号は同様の要素を指す。
コンピューティング能力を含む携帯電話機(すなわち、スマートフォン、ハンドセット、モバイルステーション、携帯通信機器等)の人気はますます高まっている。これらのスマートフォンの多くは、モバイルプロセッサ上で動作するモバイルオペレーティングシステム(「OS」)を含む。モバイルプロセッサとモバイルOSによってこれらのデバイスの能力は増大しているが、スマートフォンがデスクトップやノートブックコンピュータのようなパーソナルコンピュータ(「PC」)環境(すなわち、Windows、Mac OS X、Linux)に取って代わる傾向は見られず、これは少なくとも提供されるユーザ体験が限られていることによる。特に、スマートフォンに見られるユーザインタフェースデバイスは一般に、モバイル環境に合わせて作られている。例えば、スマートフォンでは一般に、小さい親指式QWERTYキーボード、タッチスクリーンディスプレイ、クリックホイール、及び/またはスクロールホイールがユーザインタフェースデバイスとして使用される。モバイルOSのほか、モバイルOS用に開発されたアプリケーション(すなわち、「アプリ」)は一般に、モバイルデバイス上にあるモバイルプロセッサとユーザインタフェースデバイスを含むモバイル環境の制約に合わせて設計されている。そのため、PCオペレーティングシステム用に開発された多くのアプリケーションは、モバイルOSでは利用できない(すなわち、モバイルOS用にはコンパイルされず、その上では動作しない)。これに加えて、文書の作成や編集等、一部の作業については、フルサイズのキーボードや大型ディスプレイのほうが、スマートフォンで一般的に見られるユーザインタフェースコンポーネントより使いやすい。
従って、ユーザは一般に、コンピューティング体験ごとに別のコンピューティングデバイス、例えばスマートフォン、タブレットコンピュータ、ラップトップコンピュータ及び/またはデスクトップコンピュータを使用する。この場合、デバイスによってCPU、メモリ、ファイル記憶装置、OSが異なる。スマートフォンと他のデバイスの間の接続とファイル共有のためには、1つのデバイス(例えば、モバイルOSを実行するスマートフォン)を第二の、完全に異種のデバイス(例えば、デスクトップOSを実行するノートブック、デスクトップまたはタブレット)に、無線または有線接続を通じて連結する。情報はデバイス間で、各デバイスで別々に動作するアプリケーション間でデータを同期させることによって共有される。このプロセスは一般に「同期」と呼ばれ、面倒であり、通常、ユーザによる積極的な管理が必要となる。
図1は、各種の実施形態による、別々のユーザ操作空間(すなわち、ユーザ環境)に関連する複数のオペレーティングシステムを含む1つのモバイルデバイスで複数のユーザコンピューティング体験を提供するコンピューティング環境100を示す。コンピューティング環境100の第一のユーザ操作空間115には、モバイルコンピューティングデバイス110のディスプレイ116とI/Oデバイス118が含まれる。モバイルコンピューティングデバイス110が独立したモバイルデバイスとして操作されると、モバイルOS 130は、ユーザ操作空間115を通じて一般的なモバイルコンピューティングユーザ体験を提供する。モバイルOS 130によって提供されるモバイルコンピューティング体験には一般に、携帯電話機能や、ディスプレイ116とI/Oデバイス118とを含むユーザ操作空間115に適したグラフィカルユーザインタフェース(「GUI」)が含まれる。例えば、ティスプレイ116はタッチスクリーンディスプレイであってもよく、モバイルOS 130上で動作するアプリケーションプログラム(すなわち、「アプリ」)は主として、タッチスクリーンディスプレイ116を用いたモバイルOS 130のジェスチャ認識GUIを通じて制御されてもよい。
コンピューティング環境100の中で、モバイルコンピューティングデバイス110は、I/Oデバイス144、146及び/または148を含む第二の端末環境140とドッキングされてもよい。実施形態では、モバイルコンピューティングデバイス110は第二の端末環境140に、モバイルコンピューティングデバイス110のポート120を第二の端末環境140のポート142に接続することによってドッキングされている。この場合、第二の端末環境140はコンピューティング環境100の第二のユーザ操作空間を提供する。いくつかの例において、第二のユーザ操作空間のほうがデスクトップコンピューティング体験により適していてもよい。このような場合、デスクトップOS 160を第二の端末環境140に関連付け、第二のユーザ操作空間を通じて、ノートブック、タブレットまたはデスクトップコンピュータ環境のすべての能力を提供することができる。
実施形態では、モバイルOS 130とデスクトップOS 160は、モバイルコンピューティングデバイス110のプロセッサの共有カーネル上で同時に動作する。共有カーネルでのモバイルOSとデスクトップOSの同時動作は、2011年8月24日に出願された、“MULTI−OPERATING SYSTEM”と題する米国特許出願第13/217,108号明細書においてより詳しく説明されており、同出願を参照によって本願に援用する。このように、1つのモバイルコンピューティングデバイスは、第一のユーザ操作空間を通じたモバイルコンピューティング体験と第二のユーザ操作空間を通じたデスクトップコンピューティング体験を提供できる。別々のユーザ操作空間を通じて複数のオペレーティングシステムを同時に実行可能な1台のモバイルデバイスを携帯できることは、ユーザにとっての多くの問題を解決するが、(同時動作するモバイルOSとデスクトップOSを通じた)各ユーザ操作空間により通常提供される利用可能なアプリケーションとユーザ機能の集合は、それぞれ異なる。
本発明の実施形態は、第一のOS(例えば、モバイルOS 130)で動作するアプリケーションを、見かけ上、第二のOS(例えば、デスクトップOS 160)の中で実行しやすくすることに関し、この場合、第一と第二のOSは共有のカーネル上で同時動作中である。特に、ユーザに第一の(例えば、非互換的な)OSのためにコンパイルされ、その中で動作するアプリケーションに関する、第二のOSにおける入力(例えば、入力デバイス)と出力(例えば、ディスプレイ、オーディオ等)をサポートする中で、多くの問題がアドレスされる。同時動作中の複数のアプリケーションの表示と双方向性に対処する場合は、また別の問題も発生し得る。
例えば、第一と第二のアプリケーションがどちらも第一のOSのためにコンパイルされ、第一のOS上で同時動作中である場合を考える。しかしながら、ユーザは、一方のOSに関連する入力/出力デバイスを通じて(例えば、モバイルコンピューティング環境のタッチスクリーンディスプレイを使って)第一のアプリケーションのグラフィクス出力を見て、その第一のアプリケーションを操作し、また第二のOSに関連する入力/出力デバイスを通じて(例えば、デスクトップコンピューティング環境のディスプレイ、キーボード、マウスを使って)第二のアプリーションのグラフィクス出力を見て、その第二のアプリケーションを操作したいと望む。このようなシナリオに対処するには、複数のディスプレイ環境でのグラフィクスの同時操作と、異なるアプリケーションに関する複数の入力/出力ストリームの同時処理を、すべて別々の(例えば、非互換性の)オペレーティングシステム上で行う必要がある。
従って、実施形態は、第二のOSのユーザ操作空間内で第一のOSのアプリケーションにアクセスし、第二のOSのユーザ操作空間内で第一のOSで実行中のアプリケーションを表示し、第二のOSのユーザ操作空間を通じてこれらのアプリケーションのユーザ操作を扱うための各種の新規な方式を提供する。実施形態は、異環境間アプラケーションの各種のディスプレイとユーザ操作機能をサポートする第二のOSのコンソールアプリケーションを含む。
1つの実施形態群は、いわゆる「非拡張」レンダリングコンテキストを使って、複数のOSによるコンピューティング環境間の同時ユーザインタフェースをサポートするための技術を提供する。別の実施形態群は、いわゆる「拡張」レンダリングコンテキストを使って、複数のOSによるコンピューティング環境間の同時ユーザインタフェースをサポートするための技術を提供する。また別の実施形態群は、いわゆる「ミラーリングされた」コンテキストを使って、複数のOSによるコンピューティング環境間の同時ユーザインタフェースをサポートするための技術を提供する。さらに別の実施形態群は、第二のOSのユーザ操作空間から第一のOS上で利用可能なアプリケーションにアクセスできるようにする。これらの実施形態群の各々を、以下により詳しく説明する。
前述のように、コンピューティング環境100は、複数のオペレーティングシステムを同時に実行しているモバイルデバイスに関連する複数のユーザ操作空間を通じて、複数のユーザコンピューティング体験を提供する。具体的には、モバイルコンピューティングデバイス110が、各々特定のコンピューティング環境に適した複数のOSを含んでいるため、モバイルコンピューティングデバイス110を、1つのモバイルコンピューティングデバイスで様々なユーザ体験を提供するための外部I/Oデバイスに適合させてもよい。例えば、ユーザは、モバイルコンピューティングデバイス110と、キーボード、ディスプレイ及び/またはポインティングデバイスをラップトップ型筐体の中に有する第二の端末環境140を有し得る。モバイルコンピューティングデバイス110がこのラップトップ型の第二の端末環境にドッキングされると、デスクトップOS 160のすべての機能が第二の端末環境140を通じて利用可能となる。
図2は、各種の実施形態による、モバイルコンピューティングデバイス110のためのハードウェアシステムアーキテクチャの一例を示す。モバイルコンピューティングデバイスハードウェア112は、1つまたは複数のCPUコア204と外部ディスプレイインタフェース220を内蔵するモバイルプロセッサ114を含む。通常、モバイルコンピューティングデバイスハードウェア112はまた、I/Oデバイス118、メモリ206、記憶デバイス208、タッチスクリーンディスプレイ116に接続されたタッチスクリーンディスプレイコントローラ210、バッテリ216に接続された電源管理IC 214、セルラーモデム218、通信デバイス222及び/または、各種の通信信号やインタフェースを通じてプロセッサ114に接続されたその他のデバイス224を含む。I/Oデバイス118は通常、ボタン及び、モバイルコンピューティングデバイス110で使用可能なその他のユーザインタフェースコンポーネントを含む。例えば、I/Oデバイス118は、1組のボタン(例えば、後退、メニュー、ホーム、検索等)、オフスクリーンジェスチャエリア、クリックホイール、スクロールホイール、QWERTYキーボード等を含んでいてもよい。その他のデバイス224は、例えばGPSデバイス、LAN接続、マイクロフォン、スピーカ、カメラ、加速度計及び/またはMS/MMC/SD/SDIOカードインタフェース等であってもよい。外部ディスプレイインタフェース220は、何れの適当なディスプレイインタフェース(例えば、VGA、DVI、HDMI等)であってもよい。
プロセッサ114は、ARMベースのモバイルプロセッサであってもよい。実施形態では、モバイルプロセッサ114は、Texas Instruments OMAP3430、Marvell PXA320、Freescale iMX51、またはQualcomm QSD8650/8250等のモバイルARMベースプロセッサである。しかしながら、モバイルプロセッサ114は、他の好適なARMベースのモバイルプロセッサや、別のプロセッサアーキテクチャ、例えばx86ベースのプロセッサアーキテクチャまたはその他のRISCベースのプロセッサアーキテクチャ等に基づくプロセッサであってもよい。
図2はモバイルコンピューティングデバイス110の1つの例示的なハードウェア実装112を示しているが、これ以外のアーキテクチャも本発明の範囲内として考えられる。例えば、図2ではモバイルプロセッサ114の外部に示されている各種のコンポーネントは、モバイルプロセッサ114の中に統合してもよい。任意選択的には、図2にモバイルプロセッサ114に統合された状態で示されている外部ディスプレイインタフェース220は、モバイルプロセッサ114の外にあってもよい。これに加えて、システムバス、ディスクリートグラフィクスプロセッサ及び/またはその他のアーキテクチャ面の変化形を使用する、他のコンピュータアーキテクチャも、本発明の態様を利用するのに適している。
図3は、各種の実施形態による、モバイルコンピュータデバイス110でモバイルOS 130とデスクトップOS 160を同時に実行するために利用可能なOSアーキテクチャ300を示す。図3に示されるように、モバイルOS 130とデスクトップOS 160は、独立したオペレーティングシステムである。具体的には、モバイルOS 130とデスクトップOS 160は、相互に独立した、非互換的なユーザライブラリ、グラフィクスシステム及び/またはフレームワーク層を有していてもよい。OSアーキテクチャ300のための機能と命令は、モバイルコンピューティングデバイス110の有形のコンピュータ読取可能媒体上にコンピュータプログラムコードとして記憶されていてもよい。例えば、OSアーキテクチャ300のための命令は、モバイルコンピューティングデバイスハードウェア112の記憶デバイス208の中に記憶されていてもよい。
OSアーキテクチャ300において、モバイルOS 130とデスクトップOS 160は、共有カーネル320で同時に動作する。これは、モバイルOS 130とデスクトップOS 160が共有カーネル320上で同じ時点で動作中であることを意味する。具体的には、モバイルOS 130とデスクトップOS 160はどちらも、同じカーネルインタフェース322を通じて、例えば共有カーネル320にシステムコールを行うことによって、共有カーネル320とインタフェースする。共有カーネル320は、モバイルOS 130とデスクトップOS 160の両方のプロセスに関するタスクスケジューリングを管理する。この点で、モバイルOS 130とデスクトップOS 160は、共有カーネル320で独立して、同時に動作中である。これに加えて、共有カーネル320は、ハードウェアインタフェース312により示されているように、直接、モバイルコンピューティングデバイスハードウェア112のモバイルプロセッサ114で動作する。具体的には、共有カーネル320はモバイルコンピューティングデバイスハードウェア112のコンピューティングリソース、例えばCPUスケジューリング、メモリアクセス、I/Oを直接管理する。この点で、ハードウェアリソースは仮想化されず、すなわち、モバイルOS 130とデスクトップOS 160は、仮想化されたメモリまたはI/Oアクセスを使用せずに、カーネルインタフェース322を通じてシステムコールを行う。
図3に示されるように、モバイルOS 130は、ライブラリ層330、アプリケーションフレームワーク層340、アプリケーション層350を有する。モバイルOS 130では、アプリケーション352と354が、モバイルOS 130のアプリケーションフレームワーク層340によってサポートされるアプリケーション層350の中で動作する。アプリケーションフレームワーク層340には、モバイルOS 130上で動作するアプリケーションにより使用されるマネージャ342とサービス344が含まれる。例えば、アプリケーションフレームワーク層340には、ウィンドウマネージャ、アクティビティマネージャ、パッケージマネージャ、リソースマネージャ、電話マネージャ、ジェスチャコントローラ及び/または、モバイル環境のためのその他のマネージャとサービスが含まれていてもよい。アプリケーションフレームワーク層340には、モバイルOS 130のために開発されたアプリケーションを実行するモバイルアプリケーションランタイム環境が含まれていてもよい。モバイルアプリケーションランタイム環境は、より低い処理能力及び/または限られたメモリスペース等、モバイルコンピューティングリソースに合わせて最適化されていてもよい。モバイルアプリケーションランタイム環境では、プロセス分離、メモリ管理、スレッディングサポートがカーネルに依存して行われてもよい。ライブラリ層330には、I/Oとストリング操作等の一般的な機能、グラフィクス機能、データベース能力、通信能力及び/またはその他の機能や能力を実行するユーザライブラリ332が含まれる。
図3に示されているように、デスクトップOS 160は、ライブラリ層360、フレームワーク層370、アプリケーション層380を有する。デスクトップOS 160では、アプリケーション382と384が、デスクトップOS 160のアプリケーションフレームワーク層370によってサポートされるアプリケーション層380の中で動作する。アプリケーションフレームワーク層370には、デスクトップOS 160上で動作するアプリケーションにより使用されるマネージャ372とサービス374が含まれる。例えば、アプリケーションフレームワーク層370には、ウィンドウマネージャ、アクティビティマージャ、パッケージマネージャ、リソースマネージャ及び/または、デスクトップ環境に一般的なその他のマネージャとサービスが含まれていてもよい。ライブラリ層360には、I/Oとストリング操作等の一般的な機能、グラフィクス機能、データベース能力、通信能力及び/またはその他の機能や能力を実行するユーザライブラリ362が含まれていてもよい。
本発明の各種の実施形態において、デスクトップOS 160は、モバイルOS 130とは別の実行環境で動作する。例えば、モバイルOS 130はルート実行環境で動作してもよく、デスクトップOS 160は、ルート実行環境下で確立された第二の実行環境で動作してもよい。モバイルOS 130上で動作するプロセスとアプリケーションは、ルート実行環境の中でユーザライブラリ332、マネージャ342及びサービス344にアクセスする。デスクトップOS 160上で動作するプロセスとアプリケーションは、第二の実行環境の中で、ユーザライブラリ362、マネージャ372及びサービス374にアクセスする。
実施形態では、モバイルOS 130とデスクトップ160は、非互換性のユーザライブラリ、グラフィクスシステム及び/またはアプリケーションフレームワークを有する独立したオペレーティングシステムである。従って、モバイルOS 130のために開発されたアプリケーションは、直接、デスクトップOS 160では動作できず、デスクトップOS 160のために開発されたアプリケーションは、直接、モバイルOS 130上では動作できない。例えば、モバイルOS 130のアプリケーション層350で動作するアプリケーション352は、デスクトップOS 160と非互換的であってもよく、すなわち、アプリーション352をデスクトップOS 160で実行できない。具体的には、アプリケーション352は、デスクトップOS 160のマネージャ372、サービス374及び/またはライブラリ362では利用できない、またはこれらと互換性のないモバイルOS 130のマネージャ342、サービス344及び/またはライブラリ332に依存していてもよい。
その結果、モバイルOS 130とデスクトップOS 160で利用できるアプリケーションの集合はそれぞれ異なっていてもよい。この点で、OSアーキテクチャ300のモバイルOS 130とデスクトップOS 160は、別々のユーザ操作空間からアクセス可能な別々のアプリケーション集合を通じて、別々のユーザ体験を提供する。ユーザは、モバイルOS 130に関連する第一のユーザ操作空間を通じて、モバイルOS 130上で利用可能な(すなわち、そのためにコンパイルされ、その実行環境内にロードされた)アプリケーションにアクセスし、デスクトップOS 160に関連する第二のユーザ操作空間を通じて、デスクトップOS 160上で利用可能なアプリケーションにアクセスしてもよい。
前述のように、モバイルオペレーティングシステムは一般に、デスクトップオペレーティングシステムと同じグラフィクス環境を使用しない。デスクトップOS用のグラフィクス環境は、フレキシビリティと高性能性のために設計された。例えば、一部のデスクトップOSで使用されるXウィンドウシステムは、処理及びシステムリソースをより多く使用することと引き換えに、プラットフォームとネットワークの独立性を提供する。これに対して、モバイルOS用のグラフィクス環境の設計は、効率性とモバイルコンピューティング環境の特定のユーザ入力デバイスのほうにより重点を置き、フレキシビリティはそれより軽視されている。モバイル及びデスクトップOSのグラフィクス環境は異なることが多いため、モバイルOS上で動作するアプリケーションは、モバイルOSのグラフィクスサーバからデスクトップOSのグラフィクスサーバにグラフィクス情報をリダイレクトすることによって、デスクトップOSのユーザ空間内で表示されるようにリダイレクトできない。
最も広く採用されているモバイルOSはGoogleのAndroidである。AndroidはLinuxに基づいているが、モバイル環境とモバイルプロセッサのために、カーネル及びその他のOS層に変更が加えられている。特に、LinuxカーネルはPC(すなわち、x86)CPUアーキテクチャ用に設計されているが、AndroidカーネルはARMベースのモバイルプロセッサに合わせて変更されている。Androidデバイスドライバはまた、タッチスクリーン、モバイル接続(GSM/EDGE、CDMA、Wi−Fi等)、バッテリ管理、GPS、加速度計及びカメラモジュール等、モバイルハードウェアアーキテクチャの中に一般的にあるデバイスやその他のデバイスに特に合わせて作られている。これに加えて、AndroidはネイティブのX Window Systemを持っていなければ、フルセットの標準GNUライブラリもサポートしておらず、これによって、既存のGNU/LinuxアプリケーションまたはライブラリをAndroidにポートすることが難しい。
AppleのiOSオペレーティングシステム(iPhoneで動作)とMicrosoftのWindows Phone 7も同様に、モバイル環境とモバイルハードウェアアーキテクチャ用に変更されている。例えば、iOSはMac OS XデスクトップOSから派生しているが、一般的なMac OS X用アプリケーションは、iOS上ではネイティブとして動作しない。具体的には、iOS用アプリケーションは、標準開発キット(「SDK」)を通じて、iOSの「Cocoa Touch」ランタイム環境で動作するように開発されており、これによってタッチベースの入力、プッシュ通知及びシステムサービス等の重要なiOS機能のための基本的なアプリケーションインフラストラクチャとサポートが提供される。そのため、Mac OS Xのために書かれたアプリケーションは、ポートしないとiOSで動作しない。これに加えて、Mac OS X用アプリケーションをiOSにポートすることは、2つのOS間のユーザライブラリ及び/またはアプリケーションフレームワークの違い、及び/またはモバイルとデスクトップハードウェアのシステムリソースの違いによって、難しいかもしれない。
OSアーキテクチャ300に適合する1つの実施形態において、AndroidモバイルOSとフルLinux OSは、変更されたAndroidカーネル上で独立して、同時に動作する。この実施形態では、Android OSは変更型Androidディストリビューションであってもよく、その一方で、Linux OS(「Hydroid」)は変更型Debian LinuxデスクトップOSであってもよい。図4〜6は、各種の実施形態による、OSアーキテクチャ300で使用可能なAndroidモバイルOS 430、Androidカーネル520、Hydroid OS 660をより詳細に示す。
図4に示されるように、Android OS 430は、ライブラリ層432の中にC/C++ライブラリの集合を含み、これらはアプリケーションフレームワーク層440を通じてアクセスされる。ライブラリ層432には、「glibc」Linux Cライブラリより小型で高速となるようにAndroidのために特に開発された「bionic」システムCライブラリ439が含まれる。ライブラリ層432にはまた、プロセス間通信(IPC)ライブラリ436が含まれ、これにはAndroid OSの「Binder」IPCメカニズムの基本クラスが含まれる。Binderは特にAndroidのために、プロセス間及びサービス間の通信を可能にするために開発された。図4のライブラリ層432に示されている他のライブラリとしては、媒体フォーマットの記録と再生をサポートするメディアライブラリ435、ディスプレイサブシステムへのアクセスを管理し、複数のアプリケーションからのグラフィクス層を合成するサーフェスマネージャ434、2D及び3Dグラフィクスエンジン438、軽量リレーショナルデータベースエンジン437がある。ライブラリ層432に含めることができるが、図4には示されていないその他のライブラリには、ビットマップ及びベクトルフォントレンダリングライブラリ、ユーティリティライブラリ、ブラウザツール(すなわち、WebKit等)及び/または秘匿通信ライブラリ(すなわち、SSL等)がある。
Android OS 430のアプリケーションフレームワーク層440は、開発者がデバイスハードウェアのコンポーネントを使用し、位置情報にアクセスし、背景サービスを実行し、アラームをセットし、ステイタスバーに通知を加えること等を可能にする開発プラットフォームを提供する。フレームワーク層440により、アプリケーションがその能力を公開し、他のアプリケーションの公開された能力を利用することも可能となる。AndoroidモバイルOS 430のアプリケーションフレームワーク層440のコンポーネントは、アクティビティマネージャ441、リソースマネージャ442、ウィンドウマネージャ443、ドックマネージャ444、ハードウェア及びシステムサービス445、デスクトップモニタサービス446、マルチディスプレイマネージャ447及びリモート通信サービス448を含む。AndroidモバイルOS 430のフレームワーク層440に含めることのできるその他のコンポーネントには、ビューシステム、電話マネージャ、パッケージマネージャ、位置マネージャ及び/または通知マネージャのほか、その他のマネージャとサービスがある。
Android OS 430で動作するアプリケーションは、Androidオブジェクト指向アプリケーションフレームワークの上のAndroidランタイム環境433のDalvik仮想マシン431の中で動作する。Dalvik仮想マシン431はレジスタベースの仮想マシンであり、メモリ使用量と処理要求を削減するために設計されたコンパクトな実行可能フォーマットを実行する。Android OS 430で動作するアプリケーションには、ホーム画面451、電子メールアプリーション452、写真アプリケーション453、ブラウザアプリケーション454、及び/またはその他のアプリケーション(「アプリ」)455がある。
Android OSグラフィクスシステムは、クライアント/サーバモデルを使用する。サーフェスマネージャ(「SurfaceFlinger」)はグラフィクスサーバであり、アプリケーションはクライアントである。SurfaceFlingerは、ディスプレイIDのリストを維持し、ディスプレイIDへのアプリケーションの割当を常に追跡する。1つの実施形態では、モバイルコンピューティングデバイス110は複数のタッチスクリーンディスプレイ116を有する。この実施形態において、ディスプレイID 0がタッチスクリーンディスプレイ116の1つに関連付けられ、ディスプレイID 1が他方のタッチスクリーンディスプレイ116に関連付けられる。ディスプレイID 2は両方のタッチスクリーンディスプレイ116に関連付けられる(すなわち、このアプリケーションが両方のディスプレイで同時に表示される)。2より大きいディスプレイIDは仮想ディスプレイであり、すなわち、これらはモバイルコンピューティングデバイスハードウェア112の上に物理的に存在するディスプレイには関連付けられない。
Androidアプリケーション用のグラフィクス情報には、ウィンドウ、ビュー、及びキャンバスがある。各ウィンドウ、ビュー及び/またはキャンバスには、基本となるサーフェスオブジェクトが含められる。サーフェスオブジェクトは、2つのバッファ(フロント及びバックバッファ)に格納され、描画のためのプロセス間で同期される。SurfaceFlingerは、すべてのサーフェスを共通のメモリプールの中に維持し、これによって、Android内のすべてのプロセスがこれらにアクセスし、その中に描画することができ、コストのかかるコピー動作が不要となり、またXウィンドウ等のサーバ側の描画プロトコルを使用する必要もない。アプリケーションは、SurfaceFlingerがフロントバッファから読み出している間は常にバックバッファの中に描画する。SurfaceFlingerは、各サーフェスオブジェクトを作成し、すべてのサーフェスオブジェクトを維持し、また、各アプリケーションに関するサーフェスオブジェクトリストを維持する。アプリケーションは、バックバッファへの描画を完了すると、SurfaceFlingerにイベントをポストし、これがバックバッファをフロントバッファにスワップして、サーフェス情報をフレームバッファにレンダリングする作業を待ち行列に入れる。
SurfaceFlingerは、すべてのウィンドウ変更イベントをモニタする。1つまたは複数のウィンドウ変更イベントが発生すると、SurfaceFlingerはサーフェス情報を1つまたは複数のディスプレイのためのフレームバッファにレンダリングする。レンダリングには、サーフェスを合成すること、すなわちサーフェスの寸法、透明度、Zオーダ、可視性に基づいて最終的な画像フレームを構成することが含まれる。レンダリングはまた、ハードウェア加速(例えば、グラフィクス処理ハードウェアのためのOpenGL 2D及び/または3Dインタフェース)を含んでいてもよい。SurfaceFlingerは、すべてのサーフェスオブジェクトをループさせて、それらのフロントバッファをそのZオーダでフレームバッファにレンダリングする。
図5は、各種の実施形態による変更型Androidカーネル520をより詳しく示す。変更型Androidカーネル520には、タッチスクリーンディスプレイドライバ521、カメラドライバ522、Bluetoothドライバ523、共有メモリアロケータ524、IPCドライバ525、USBドライバ526、WiFiドライバ527、I/Oデバイスドライバ528及び/または電源管理モジュール530が含まれる。I/Oデバイスドライバ528には、ポート120を通じてモバイルコンピューティングデバイス110に接続可能な外部I/Oデバイスのためのデバイスドライバが含まれる。変更型Androidカーネル520には、low memory killer、カーネルデバッガ、ログ機能及び/またはその他のハードウェアデバイスドライバを含むその他のドライバや機能ブロックが含まれていてもよい。
図6は、各種の実施形態によるHydroid OS 660をより詳しく示す。HydroidはフルLinux OSであり、標準的なLinuxディストリビューション用に開発されたほとんどすべてのアプリケーションを実行できる。特に、Hydroid OS 660のライブラリ層662には、ネットワーキング、グラフィクス処理、データベース管理及びその他の一般的なプログラム機能をサポートするLinuxライブラリが含まれる。例えば、ユーザライブラリ662には、「glibc」Linux Cライブラリ664、Linuxグラフィクスライブラリ662(例えば、GTK、OpenGL等)、Linuxユーティリティライブラリ661、Linuxデータベースライブラリ、及び/またはその他のLinuxユーザライブラリが含まれていてもよい。アプリケーションは、Hydroid上では、Xサーバ674、ウィンドウマネージャ673及び/またはデスクトップ環境672を用いてX Window Linuxグラフィカル環境内で動作する。図のアプリケーションには、ワードプロセッサ681、電子メールアプリケーション682、スプレッドシートアプリケーション683、ブラウザ684及びその他のアプリケーション685が含まれている。
Linux OSグラフィクスシステムは、Xウィンドウ(または「X11」)グラフィクスシステムに基づいている。Xウィンドウは、プラットフォームに依存しないネットワーク式のグラフフィクスフレームワークである。Xウィンドウはクライアント/サーバモデルを利用しており、Xサーバがグラフィクスサーバ、アプリケーションがクライアントである。Xサーバは、ディスプレイ、タッチスクリーンディスプレイ、キーボード、ポインティングデバイス等、Linux OSに関連する入力/出力ハードウェアを制御する。この点で、Xウィンドウはサーバ側の描画グラフィクスアーキテクチャを提供し、すなわち、Xサーバがウィンドウやピクセルマップを含むDrawableのためのコンテンツを維持する。XクライアントはXサーバと、通信チャネル上で描画動作を説明するデータパケットを交換することによって通信する。Xクライアントは、標準ルーチンのライブラリ(「Xlib」)を通じてX通信プロトコルにアクセスする。例えば、XクライアントはXサーバに対し、クライアントウィンドウに三角形を描画するように要求を送信してもよい。XサーバはXクライアントに入力イベント、例えばキーボードまたはポインティングデバイスの入力、及び/またはウィンドウの移動またはリサイジングを送信する。入力イベントはクライアントウィンドウに関連しており、例えば、ユーザがあるウィンドウ内にあるポインタをクリックすると、Xサーバはその入力イベントを含むパケットを、そのウィンドウに関連するXクライアントに送り、その中にはそのウィンドウに関係のあるイベントの動作と位置が含まれる。
オペレーティングシステムのフレームワーク、グラフィクスシステム及び/またはライブラリの違いによって、Android用に書かれたアプリケーションは通常、Hydroid OS 660では動作せず、標準的なLinuxディストリビューション用に書かれたアプリケーションは通常、Android OS 430では動作しない。この点に関して、Android OS 430とHydroid OS 660のためのアプリケーションにはバイトコード互換性がなく、すなわち、一方のためにコンパイルされた実行可能なプログラムは、他方では動作しない。
1つの実施形態において、Hydroid OS 660は、共有カーネル520を通じてAndroid OS 430との通信を容易にする異環境間通信フレームワークのコンポーネントを含む。これらのコンポーネントとしては、Android OSのBinder IPCメカニズムのための基本クラスと遠隔通信サービス671を含むIPCライブラリ663がある。
1つの実施形態において、Hydroid OS 660は、Androidルート環境内で作られた、chrootされた(「chroot」コマンドで作られた)第二の実行環境の中で実行される。Hydroid OS 660の中のプロセスとアプリケーションは、第二の実行環境の中で、これらのプロセスとアプリケーションから見た見かけ上のルートディレクトリが第二の実行環境のルートディレクトリとなるように実行される。このようにして、Hydroid OS 660は、標準Linuxディストリビューションのために書かれたプログラムを変更せずに実行でき、それは、chrootされた第二の実行環境においてHydroid OS 660上で実行されるプロセスにLinuxユーザライブラリ662を利用できるからである。
図3に戻ると、モバイルOS 130とデスクトップ160は、モバイルデバイスの共有カーネル320上でアクティブに同時動作中である。モバイルOS 130とデスクトップOS 160は、ユーザライブラリ、グラフィクスシステム及び/またはアプリケーションフレームワークに関して非互換的であってもよい。そのため、モバイルOS 130とデスクトップOS 160で利用可能なアプリケーションの集合はそれぞれ異なり、すなわち、モバイルOS 130上で利用可能な少なくとも一部のアプリケーションはデスクトップOS 160では利用できず、またその逆でもある。従って、OSアーキテクチャ300のモバイルOS 130とデスクトップOS 160は、別々のユーザ操作空間からアクセス可能な別々のアプリケーション集合を通じて、別々のユーザ体験を提供する。ユーザは、モバイルOS 130に関連するユーザ操作空間を通じてモバイルOS 130上で利用可能な(すなわち、そのためにコンパイルされ、その実行環境内にロードされた)アプリケーションにアクセスし、デスクトップOS 160に関連するユーザ操作空間を通じてデスクトップOS 160上で利用可能なアプリケーションにアクセスしてもよい。
本発明の実施形態は、OSアーキテクチャ300の機能性を拡張して、複数のOSに基づくコンピューティング環境における、よりシームレスなコンピューティング体験を提供する。実施形態には、第二のオペレーティングシステムのユーザ操作空間内におけるアプリケーション及び/または第一のオペレーティングシステムのユーザ操作空間の異環境間レンダリングが含まれ、これは第一と第二のオペレーティングシステムのグラフィクス環境に互換性がなくても行われる。実施形態にはさらに、異環境間アプリケーションのためのユーザ操作のサポートと、第二のオペレーティングシステムのユーザ操作空間からの第一のオペレーティングシステムのアプリケーションへのアクセスが含まれる。この機能によって、例えば、モバイルOS 130上で動作するモバイルOS用アプリケーションを、デスクトップOS 160に関連するユーザ操作空間を通じて表示し、操作することが可能となる。例えば、ユーザがデスクトップOS 160に関連するユーザ操作空間を通じてデスクトップOS 160を操作している間に、そのユーザは、デスクトップOS 160では利用できない(すなわち、そのためにコンパイルされておらず、そこでは実行されない)モバイルOS 130の特定のアプリケーションにアクセスしたいと希望してもよい。後述の各種の実施形態を用いれば、ユーザは、デスクトップOS 160に関連するユーザ操作空間を通じて、モバイルOS 130のためにコンパイルされ、その上で実行されるアプリケーションにアクセスし、これを表示し、操作できる。特に、実施形態は、モバイルOSの何れのアプリケーションでの異環境間操作もサポートしており、すなわち、モバイルOS用アプリケーションを下記の実施形態を使用するのに、特定の異環境間サポートを含めるように変更する必要がない。
第二のOS(例えば、デスクトップOS 160)のユーザ操作空間内からアプリケーション及び/または第一のOS(例えば、モバイルOS 130)のユーザ操作空間への、シームレスな異環境間ユーザ操作をサポートするために、アプリケーション及び/またはユーザ操作空間のグラフィクスデータ(すなわち、グラフィクスコンテキストまたはアクティブディスプレイ)を、第二のOSのユーザ操作空間の中にリアルタイムで表示されるようにレンダリングすることが望ましいかもしれない。リアルタイム(または即時)レンダリングとは、この文脈において、アプリケーションのグラフィクスデータが第二のOSのユーザ操作空間に十分に素早くレンダリングされ、グラフィクス情報の伝送に伴う遅延によってアプリケーションのパフォーマンスに気付くほどの、または実質的な低下を発生させずに、ユーザがそのアプリケーションを操作できることを意味する。この点に関して、本明細書に記載されているようなリアルタイム(または即時)異環境間レンダリングの技術により、例えばグラフィクス情報が迅速に転送され、第一のOSから第二のOSにグラフィクス情報をコピーまたは転送することに伴うフレーム遅延やその他の遅延が減る。しかしながら、これはグラフィクスの転送にまったく時間がかからないことを意味するのではなく、本明細書に記載の異環境間レンダリング方式は、グラフィクス情報が第二のOSのユーザ操作空間上で表示されるまでに限定的な時間がかかったとしても、即時またはリアルタイムとみなしてよい。
アプリケーションの異環境間レンダリングを実現するために、第一のオペレーティングシステムで動作中のアプリケーションから第二のオペレーティングシステムのグラフィクスシステムに、おそらく大量のグラフィクスデータが転送されることがある。既存のメカニズムでは、必要なグラフィクスデータを転送すると、ディスプレイの更新またはフレームレートに必ず影響が及ぶ。例えば、グラフィクスデータを直接転送することは、モバイルコンピューティング環境の制約の中では現実的ではないであろう。圧縮技術を使って転送データの総量を減らすことは可能であるが、その代わりに、情報の圧縮と解凍に必要な処理が増える。リモートのデスクトップ型システムを使って、ベクトルグラフィクスやグラフィクス更新情報を送ることはできるが、この場合もまた一般に、大量のグラフィクスデータを転送する際、またはグラフィクスコンテンツの急速な変化の際に速度が低下する。
図7は各種の実施形態によるOSアーキテクチャ構成300aを示し、これは第二のOSのユーザ操作空間内でアプリケーション及び/または第一のOSのユーザ操作空間を異環境間レンダリングするために使用でき、この場合、第一と第二のOSは共有カーネル上で同時動作中であり、別々のディスプレイデバイスを含む別々のユーザ操作空間に関連付けられている。OSアーキテクチャ構成300aのコンポーネントにより、モバイルOS 130上で動作するアプリケーションとモバイルOS 130のグラフィクスコンテキストを、デスクトップOS 160のユーザ操作空間内にレンダリングすることができ、OS 130とデスクトップOS 160は共有カーネル320上で同時動作する。各種の実施形態において、アプリケーションは、デスクトップOS 160のコンソールアプリケーション782を通じて、デスクトップOS 160のユーザ操作空間内のコンソールウィンドウに表示される。1つの実施形態において、コンソールアプリケーション782は、Xウィンドウ型アプリケーションであり、これはデスクトップOS 160のXウィンドウ型グラフィクスシステムを通じてデスクトップOS 160のユーザ操作空間内に表示される。
OSアーキテクチャ構成300aにおいて、モバイルOS 130には、グラフィクスサーバ734が含まれ、これはモバイルOS 130のアプリケーション(例えば、アプリケーション752と754)に関するサーフェス情報(例えば、サーフェス726、727、728)の割当と管理を行う。1つの実施形態において、グラフィクスサーバ734は、匿名共有メモリ(すなわち、そのカーネルを解放できるプロセス間で共有される名前付きメモリブロック)を使ってグラフィクスサーフェスのメモリを割り当てる。グラフィクスサーバ734はまた、モバイルOS 130のディスプレイの割当と追跡も行い、これにはモバイルコンピューティングデバイスハードウェア112(すなわち、ローカルディスプレイ)に内蔵されるディスプレイと、モバイルOS 130が遠隔的に(すなわち、他のOSのユーザ操作空間内で)表示されるかもしない、いわゆる仮想ディスプレイが含まれる。モバイルOS 130はまた、モバイルOS 130に関連するディスプレイ画面上に同時に複数のアプリケーションを表示するためのウィンドウシステムを含んでいてもよい。1つの実施形態において、モバイルOS 130には、デスクトップOS 160からモバイルOS 130のコンポーネントにアクセスするための遠隔通信チャネルを提供するサービスが含まれる。
OSアーキテクチャ構成300aには、モバイルOS 130上で動作中であり、モバイルOS 130に関連する第一のユーザ操作空間内に表示される第一のアプリケーション752が含まれる。OSアーキテクチャ構成300aには、やはりモバイルOS 130上で動作中であるが、後述の実施形態による異環境間レンダリングを通じて、デスクトップOS 160に関連する第二のユーザ操作空間内に表示される第二のアプリケーション754が含まれる。1つの実施形態において、アプリケーション754は、デスクトップOS 160上で動作するコンソールアプリケーション782を通じて第二のユーザ操作空間のコンソールウィンドウ内に表示される。
通常、モバイルOS 130のアプリケーションは、ユーザがアプリケーションを操作する際に使用するビューのインスタンスを作成する。例えば、アプリケーションは、アプリケーションウィンドウを構成する1つのビューを有し得る。ビューの中で、アプリケーションは、アプリケーションインタフェースの特定の領域に関する描画オブジェクトのインスタンスを作る。描画オブジェクトは、キャンバスまたは描画層と呼ばれることがあり、アプリケーションがグラフィクス情報を描画する際に使用するオブジェクトである。アプリケーションがキャンバスまたは層のインスタンスを作成すると、グラフィクスサーバ734がそのキャンバスまたは層に関連するサーフェス情報にメモリを割り当て、その描画オブジェクトをアプリケーションに戻し、すると、アプリケーションがこれを使ってキャンバスまたは層のサーフェスに関するグラフィクス情報を描画する。その後、グラフィクスサーバ734はサーフェス情報をモニタし、サーフェス情報が更新されると、このサーフェス情報をフレームバッファ(例えば、フレームバッファ716)にレンダリングする。一般に、ユーザはまた、ビューオブジェクトを通じてアプリケーションを操作する。ビューンオブジェクトはイベントリスナを含み、これは、ユーザがそのビューオブジェクトに対して動作を起こした際に、モバイルOSの入力待ち行列736によりコールされる。
OSアーキテクチャ300aに示されているように、サーフェス726、727及び/または728は、グラフィクスサーバ734によって共有メモリ724に割り当てられる。共有メモリ724は、共有カーネル320によって管理され、モバイルOS 130とデスクトップOS 160上で動作中のすべてのプロセスによりアクセス可能である。前述のように、共有メモリ724は名前付き共有メモリであってもよい。名前付き共有メモリは、共有カーネル320上で動作中のすべてのプロセスによってアクセス可能であるが、それ以外のプロセスは名前によって名前付き共有メモリの領域にアクセスすることができない。従って、名前付き共有メモリの各領域に関するファイル記述子を、プロセス間通信メカニズムを通じて送り、プロセスの境界を越えて名前付き共有メモリを参照できるようにしなければならない。共有カーネル320にはまた、IPCドライバ725が含まれ、これによって、モバイルOS 130とデスクトップOS 160の中のプロセスはプロセスの境界を越えて相互に通信できる。IPCドライバ725は、例えば、Unixドメインソケットドライバ、Android Binderドライバ、及び/またはネットワークソケットドライバであってもよい。
OSアーキテクチャ構成300aのデスクトップOS 160には、コンソールアプリケーション782とウィンドウシステム774が含まれる。コンソールアプリケーション782は、デスクトップOS 160のためにコンパイルされ、その上で動作し、デスクトップOS 160に関連するユーザ操作空間のコンソールウィンドウの中に表示される。ウィンドウシステム774には、ウィンドウマネージャ、グラフィクスサーバ及び/または、グラフィクスオブジェクトを表現し、デスクトップOSフレームバッファ718を通じてこれらをディスプレイデバイスに転送するための基盤となるグラフィクスデバイスインタフェースが含まれる。例えば、ウィンドウシステム774は、デスクトップOSフレームバッファ718を通じて、デスクトップOS 160のユーザ操作空間内にコンソールアプリケーション782を表示してもよい。ウィンドウシステム774はまた、コンソールアプリケーション782に関連するデスクトップOS 160のユーザ環境からの入力イベントをコンソールアプリケーション782に提供する。例えば、ウィンドウシステム774は、デスクトップOS 160に関連するユーザ操作空間からのポインティングデバイスの位置またはジェスチャ情報をコンソールアプリケーション782に提供してもよい。
図7において、共有メモリ724、モバイルOSフレームバッファ716、デスクトップOSフレームバッファ718を含むメモリブロックが、わかりやすいように、共有カーネル320の中にあるように示されている。しかしながら、これらのメモリブロックは、モバイルコンピュータデバイス110の有形のメモリ要素の中に物理的に設置され、共有カーネル320によって管理される。例えば、これらのメモリブロックは、図2に示されるように、プロセッサ114のRAMの中、及び/またはモバイルコンピューティングデバイスハードウェア112のメモリデバイス206のRAMの中に設置されてもよい。
OSアーキテクチャ構成300aは、第二のオペレーティングシステムに関連するユーザ操作空間内に共有カーネル上で動作中の第一のオペレーティングシステムのアプリケーションを異環境間レンダリングすることをサポートし、この場合、第一と第二のオペレーティングシステムは共有カーネル上で同時動作中である。OSアーキテクチャ構成300aは、複数のユーザ操作空間を通じて複数のユーザコンピューティング体験を提供するコンピューティング環境における異環境間レンダリングをサポートするために使用してもよい。例えば、OSアーキテクチャ構成300aは、図1に示されるようなコンピューティング環境100の中で使用してもよい。
図8は、各種の実施形態によるコンピューティング環境800を示す。コンピューティング環境800は、モバイルコンピューティングデバイスハードウェア112のタッチスクリーンディスプレイ116とその他のI/Oデバイス118を含む第一のユーザ環境を有する。このユーザ環境は第一のユーザ操作空間を提供し、ユーザはここからモバイルOS 130を操作する。コンピューティング環境800の第二のユーザ環境は、ディスプレイモニタ844、キーボード846及び/またはポインティングデバイス848を含む。ユーザ環境840は、ドックコネクタ841とドックケーブル843を通じて、モバイルコンピューティングデバイス110に接続されてもよい。ドックコネクタ841とドックケーブル843は、図1に示されるように、ドックインタフェース122を通じてモバイルコンピューティングデバイス110のポート120とインタフェースするポートを含んでいてもよい。この点に関して、ユーザ環境840は、モバイルコンピューティングデバイス110に対して、ドッキングされた第二の端末環境を提供する。コンピューティング環境800において、デスクトップOS 160はドッキングされた第二の端末環境840に関連付けられてもよく、これによって、ユーザは第二の端末環境840によって提供されるユーザ操作空間を通じてデスクトップOS 160を操作できる。第二の端末環境840は、一般的なデスクトップ型コンピューティング環境として示されているが、デスクトップOS 160は、他のタイプのコンピューティング環境、例えばラップトップ、タブレット及び/またはその他のタイプのコンピューティング環境を通じて第二のユーザ操作空間を提供してもよい。
OSアーキテクチャ構成300aをコンピューティング環境800で使用して、第一のOS(すなわち、モバイルOS)上で動作し、第二のOSのユーザ環境(すなわち、デスクトップOS 160に関連するユーザ環境840)の中に表示されるアプリケーションの異環境間レンダリングを提供してもよい。例えば、モバイルOS 130上で動作中のアプリケーション754は、デスクトップOS 160のユーザ操作空間880のコンソールウィンドウ882の中に表示されてもよい。ウィンドウ884と886を含む、ユーザ操作空間880内のその他のウィンドウは、デスクトップOS 160で動作中の他のアプリケーションのウィンドウであってもよい。ユーザに対しては、コンピューティング環境800はアプリケーション754に関するシームレスなコンピューティング体験を提供し、これは、アプリケーション754がデスクトップOS 160のユーザ操作空間の中で、実際にはアプリケーション754はモバイルOS 130で動作しているが、デスクトップOS 160上で実行されているかのように使用できるからである。
図8は、デスクトップ型の第二の端末環境840を示している。この例では、ユーザは、第二の端末環境840のキーボード846とマウス848を使うことにより、コンソールウィンドウ882を通じて(すなわち、主としてポインティングデバイスに基づくGUI)、モバイルOSのアプリケーション及び/またはユーザ操作空間を操作してもよい。しかしながら、アプリケーションの異環境間レンダリング及び/またはモバイルOSユーザ操作空間のミラーリングを、他の第二の端末環境で使用してもよい。例えば、デスクトップOS 160は、タッチスクリーンディスプレイを含むタブレット型の第二の端末環境に関連付けることができる。この場合、ユーザは、ユーザが一般的にモバイルOS 130のユーザ操作空間を操作するのとほとんど同じ方法で(すなわち、主としてジェスチャベースのGUI)、モバイルOS 130の異環境間アプリケーションまたはミラーリングされたユーザ操作空間を操作してもよい。
前述のように、本発明の実施形態は、複数のOSに基づくコンピューティング環境において、異環境間アプリケーション及び/またはミラーリングされたユーザ操作空間のユーザによる同時インタフェースをサポートすることに関する。一例において、ユーザインタフェースのサポートは、異環境間アプリケーションのために提供され、それによって第一のOS上で動作中のアプリケーションを、実質的にもともと第二のオペレーティングシステム上で動作しているかのように、第二のOSのユーザ操作空間を通じて表示し、操作することができる。
非拡張レンダリングコンテキストによる実施形態
いくつかの実施形態は、第一のオペレーティングシステムのグラフィクスレンダリングコンテキストを拡張せずに、複数のOSにわたる同時ユーザインタフェースをサポートすることに関する。第一のOS(例えば、モバイルOSであるAndroid)は一般に、単独の、アクティブなユーザ操作空間となるように構成される。このユーザ操作空間には、アクティブディスプレイ(例えば、解像度等、関連する特徴を有する)と、ユーザがアクティブディスプレイ上で表示される要素を操作できるような1つまたは複数のアクティブ入力デバイスが含まれる。従って、第一のOSは、アクティブディスプレイに表示するために実行されるアプリケーションに関するサーフェス情報をレンダリングする際に使用できるレンダリングコンテキストを作成する。
非拡張レンダリングコンテキストによる実施形態
いくつかの実施形態は、第一のオペレーティングシステムのグラフィクスレンダリングコンテキストを拡張せずに、複数のOSにわたる同時ユーザインタフェースをサポートすることに関する。第一のOS(例えば、モバイルOSであるAndroid)は一般に、単独の、アクティブなユーザ操作空間となるように構成される。このユーザ操作空間には、アクティブディスプレイ(例えば、解像度等、関連する特徴を有する)と、ユーザがアクティブディスプレイ上で表示される要素を操作できるような1つまたは複数のアクティブ入力デバイスが含まれる。従って、第一のOSは、アクティブディスプレイに表示するために実行されるアプリケーションに関するサーフェス情報をレンダリングする際に使用できるレンダリングコンテキストを作成する。
しかしながら、前述のように、本明細書には同時に使用中の複数のユーザ操作空間中に第一のOSを有効にフーリングするための新規の技術が記載される。さらに、この技術によれば、複数のユーザ操作空間を、複数のコンピューティング環境上の異なる(例えば、非互換性の)オペレーティングシステムに関連付けることが可能となる。いくつかの実施形態には、異環境間リモートレンダリングを通じてディスプレイ出力を処理するための技術が関わる。その他の実施形態は、このような場合のユーザの操作を扱うための技術に関する。
異環境間リモートレンダリングにおいて、第一のOS上で動作し、第二のOSに関連するコンピューティング環境内で表示されるアプリケーションに関するアプリケーショングラフィクスは、第二のOS内からレンダリングされる。1つの実施形態において、第二のOS上で動作中のコンソールアプリケーションは、共有メモリからのそのアプリケーションに関するサーフェス情報にアクセスし、第二のOSに関連するコンピューティング環境のコンソールウィンドウ内にこのアプリケーションをレンダリングする。
カレンダアアプリケーションとワードプロセシングアプリケーションがどちらもモバイルデバイス上の第一のOS(例えば、モバイルOS 130)用にコンパイルされ、同時動作していると仮定する。第二のOS(例えば、デスクトップOS 160のようなノンモバイルOS)が共有カーネルを使ってモバイルデバイス上で同時に動作している。ユーザは、モバイルデバイスを第二の、デスクトップコンピューティング環境にドッキングしており、このデスクトップコンピューティング環境を通じてワートプロセシングアプリケーションを操作したいと望んでいる。モバイルコンピューティング環境(すなわち、モバイルデバイス)の第二のOSを使って、デスクトップコンピューティング環境のユーザ操作空間を、ユーザにとってよくわかる方法で扱うことが望ましい。
図9は、各種の実施形態による異環境間リモートレンダリングの態様を示す。図9に示されるアプリケーションレンダリングの概略図900において、第一のアプリケーション910(例えば、カレンダアプリケーション)は第一のOS内の第一のサーフェス912に関する更新を計算する。第一のサーフェス912は、第一のオペレーティングシステムによって共有メモリ空間内の第一のメモリ位置に格納される。例えば、第一のメモリ位置は、名前付きの共有メモリの1領域であってもよい。第一のアプリケーション910は、第一のサーフェス912のバックバッファ914を更新する。同様に、第二のアプリケーション930(例えば、ワードプロセシングアプリケーション)は、第一のOSを使って、第二のサーフェス932の更新を計算する。第二のサーフェス932は、第一のOSによって共有メモリ空間の第二のメモリ位置(例えば、名前付きの共有メモリの第二の領域)に格納される。
第一のOSは、いつレンダリングシーケンスを開始するか判断する。例えば、第一のOSは、サーフェス912及び/または932に関するサーフェス情報が変更された時にレンダリングシーケンスを開始してもよい。第一のOSは、特定のアプリケーションに関連するサーフェス情報が変化したかどうかを判断し、第一のサーフェス912と第二のサーフェス932を含むすべてのサーフェスについて1ループを実行してもよい。レンダリングシーケンスの中で、サーフェス912に関するサーフェス情報が変化すると、第一のOSはフロントバッファ916とバックバッファ914をスワップして、バックバッファ914の中にあったサーフェス情報が今度はフロントバッファ916にあるようにする。第一のオペレーティングステムは、第一のサーフェス912を第三のメモリ位置920にレンダリングして、第一のOSに関連する第一のユーザ操作空間内で表示されるべき最終画像918を作る。
第二のサーフェス932に関するサーフェス情報が変化すると、第一のOSは第二のOSに対し、第二のサーフェス932に関するサーフェス情報が変化したことを通知する。具体的には、第一のOSは第二のOSのコンソールアプリケーションに対し、サーフェス932がアップデートされたことを示す描画通知を、プロセス間通信チャネルを通じて送信する。描画通知は、フロント画像936のファイル記述子及び/またはフロント画像936のための共有メモリ空間に関するその他の特徴、例えばバッファの大きさ、層の順序等を含んでいてもよい。コンソールアプリケーションは、ファイル記述子をそのプロセス空間にマッピングして、第二のメモリ位置の参照を取得する。第二のメモリ位置の参照を通じて、第二のOSのコンソールアプリケーションは、フロント画像バッファ936からサーフェス情報を直接読み出し、第二のサーフェス932のフロント画像936に関するサーフェス情報を、第二のOSに関連する第二のユーザ操作空間内のコンソールウィンドウ940にレンダリングする。このようにして、コンソールアプリケーションは、第二のアプリケーション930をリアルタイムでコンソールウィンドウ940の中にレンダリングすることができ、プロセス間でグラフィクスフレームまたはサーフェス情報をコピーすることは不要となる。その代わりに、コンソールアプリケーションは、プロセス間通信を通じて送られたファイル記述子を使って、第二のサーフェス932の共有メモリをそれ自身のプロセス空間にマッピングすることにより、サーフェス情報を直接読み出す。
図10は、各種の実施形態による、非拡張レンダリングコンテキストでの異環境間リモートレンダリングの例示的方法のフロー1000を示す。実施形態では、どちらも第一のオペレーティングシステムのためにコンパイルされ、その中でアクティブに同時動作中の第一のアプリケーション(例えば、カレンダアプリケーション)と第二のアプリケーション(例えば、ワードプロセシングアプリケーション)のアプリケーショングラフィクスの表示が維持される。
方法1000はブロック1004で、第一のオペレーティングシステムを使って第一のアプリケーションのサーフェスの更新を計算することから始まる。サーフェスの更新の計算では、アプリケーションデータを使って、どのサーフェスがどのように変化したかが判断される。例えば、ユーザの操作により、いくつかのサーフェスが位置、順序(例えば、1つの層が部分的に他の層の前にあっても、他の層により完全に隠れていても、その他でもよい)、大きさ、色、テクスチャ等が変化した可能性がある。
ブロック1008で、第一のアプリケーションのこれらの更新後のサーフェスが、第一のオペレーティングシステムを使ってレンダリングされ、第一のメモリ位置に第一のグラフィクスフレームが生成される。例えば、第一のOSのレンダリングエンジンはそれ以前に、ディスプレイに関連するレンダリングコンテキストを作成した。すると、グラフィクスフレームは、更新されたサーフェス情報を繰り返し処理することによってレンダリングし、そのレンダリングコンテキストに関連するディスプレイの特徴(例えば、解像度)に従って、第一のアプリケーションから見えるサーフェス部分の全体または部分画像が有効に描画される。このグラフィクスフレームは第一のメモリ位置にレンダリングされる。メモリ位置は、フレームバッファメモリ、共有メモリ、またはその他の有益なメモリ位置とすることができる。
いくつかの実施形態において、ブロック1012では、レンダリングされた第一のグラフィクスフレームが、第一のメモリ位置から第一のオペレーティングシステムに関連する第一のコンピューティング環境のディスプレイに表示される。例えば、第一のグラフィクスフレームは、モバイルデバイスのフレームバッファのバックバッファ部分にレンダリングされる。その後、フレームバッファが反転し(すなわち、バックバッファ部分がフロントバッファ部分となる)、フレームバッファの、新たにフロントになったバッファ部分がモバイルデバイスのディスプレイに表示される。
ブロック1016で、第一のオペレーティングシステムを使って、第二のアプリケーションのサーフェスの更新が計算される。これは、ブロック1004の第一のアプリケーションのサーフェスに関する計算と実質的に同じように行われてもよい。しかしながら、第一のアプリケーションの更新後のサーフェスデータと異なり、第二のアプリケーションの更新後のサーフェス情報は第一のOSではレンダリングされない。そうではなく、ブロック1020で、第二のアプリケーションの更新後のサーフェスは第二のメモリ位置に格納される。第二のメモリ位置は、モバイルデバイスの共有カーネル上で同時動作中の第一と第二のOSの両方によりアクセス可能な共有メモリ位置である。
ブロック1024で、第二のアプリケーションの更新後のサーフェスは、第二のオペレーティングシステムのコンソールアプリケーションを使ってレンダリングされ、第三のメモリ位置の中に第二のグラフィクスフレームが生成される。例えば、図7のコンソールアプリケーション782は、アプリケーション754の更新後のサーフェスを第二のOSのフレームバッファメモリ(例えば、第二のコンピューティング環境のディスプレイに関連付けられている)にレンダリングしてもよい。いくつかの実施形態において、ブロック1028で、第二のグラフィクスフレームは、第三のメモリ位置から第二のオペレーティングシステムに関連する第二のコンピューティング環境のディスプレイに表示される。例えば、デスクトップコンピューティング環境のディスプレイドライバは、そのフレームバッファメモリにアクセスし、第二のグラフィクスフレームにアクセスしてこれを表示する。特定の実施例においては、コンソールアプリケーションがコンソール操作空間を有し、第二のグラフィクスフレームがコンソール操作空間の中にレンダリングされる。例えば、コンソールアプリケーションは、デスクトップディスプレイ上に1つまたは複数のウィンドウをレンダリングし、第二のアプリケーションのグラフィクスがこれらのウィンドウの1つに表示される。
いくつかの実施形態において、方法1000はブロックを繰り返し処理して、両方のアプリケーションのグラフィクス環境を同時に維持する。例えば、モバイルOSは、第一のアプリケーションのグラフィクスの更新を計算して、これらの更新をモバイルフレームバッファメモリにレンダリングする。その後、モバイルOSは第二のアプリケーションのグラフィクスの更新を計算し、これらの更新を共有メモリに格納し、そこから、デスクトップOSのコンソールアプリケーションがこれらの更新をデスクトップのフレームバッファメモリにレンダリングする。その後、方法1000が次の一連の更新について繰り返される。特にいくつかの実施例は、特定のステップを異なる順序で、及び/または並行して行う。例えば、第一と第二のアプリケーションのサーフェスの更新を実質的に同時に計算することも可能である(すなわち、ブロック1004と1016を実質的に並行して行う)が、これらの更新後のサーフェスは、一部だけがローカルでレンダリングされ(例えば、ブロック1008)、更新後のサーフェスの他の部分は、リモートレンダリングのために格納される(例えば、ブロック1020と1024)。
1つの実施形態において、AndroidモバイルOSとフルLinux OS(例えば、Hydroid)は、モバイルデバイス上の共有カーネルで同時動作中である。AndroidアプリケーションがHydroid OS 660から起動されると、コンソールアプリケーションがHydroid OS 660上で起動し、Android OS 430がAndroidアプリケーションを起動させて、Androidアプリケーションに関する描画通知をコンソールアプリケーションに送信するように要求する。Andoid OS 430はAndoroidアプリケーションを起動させ、このアプリケーションを仮想ディスプレイIDに関連付けて、コンソールアプリケーションを登録し、そのアプリケーションに関する描画通知を受け取るようにする。例えば、Androidグラフィクスサーバ(すなわち、SurfaceFlinger)は、使用されていない仮想ディスプレイIDを割り当てて、アプリケーションオブジェクトリストを通じてそのアプリケーションを仮想ディスプレイIDに関連付ける。SurfaceFlingerは、共有メモリの中でAndroidアプリケーションのサーフェス情報のためのメモリを割り当て、コンソールアプリケーションを登録して、Androidアプリケーションに関する描画通知を受け取るようにする。
SurfaceFlingerが、サーフェス情報が更新されたと判断すると、SurfaceFlingerはプロセス間通信チャネルを通じてコンソールアプリケーションに描画通知を送信する。例えば、SurfaceFlingerはunixドメインソケット、Binderインタフェース及び/またはネットワークソケットを通じて描画通知を送信してもよい。描画通知には、サーフェス情報の第一の記述子が含まれる。ファイル記述子は、SurfaceFlingerにより、そのサーフェスの名前付き共有メモリ領域に関する名前空間に基づいて生成されてもよい。描画通知にはまた、データフォーマット、バッファサイズ、サーフェス位置情報が含まれていてもよい。コンソールアプリケーションは、ファイル記述子をそのプロセス空間にマッピングし、マッピングされたファイル記述子を通じて、共有メモリから読み出す。コンソールアプリケーションは次に、そのアプリケーションに関する他のグラフィクスフレームを、サーフェス情報から直接レンダリングする。すると、レンダリングされたグラフィクスフレームはデスクトップOSグラフィクスシステムによって(すなわち、Hydroid OS 660のXウィンドウグラフィクスシステムを通じて)表示される。
図11は、各種の実施形態による、異環境間リモートレンダリングのための登録及び描画プロセスフロー1100をより詳しく示している。まず、Hydroid OS 660上で動作中のコンソールアプリケーション1102は、ステップ1106で、共有カーネル520のIPCチャネル525を通じて、AndroidアプリケーションがHydroid OS 660のユーザ環境で起動され、表示されるか、Android OS 430のユーザ環境からHydroid OS 660のユーザ環境に移動されるように要求する。Androidは、ステップ1108、1110、1112で、SufaceFlinger 434にそのアプリケーションのための仮想ディスプレイIDを要求し、アプリケーションを起動させ、仮想ディスプレイのパラメータを設定する。ステップ1114で、Androidは、IPCチャネル525を通じてディスプレイIDをコンソールアプリケーションに返す。ステップ1116で、アプリケーションは新しいサーフェスを要求し、ステップ1118でこれがSurfaceFlinger 434により、サーフェスクラス1104のインスタンスを作ることによって作成される。
ステップ1120で、コンソールアプリケーション1102はレンダラオブジェクトのインスタンスを作り、これがHydroid OS 660のXウィンドウシステムを通じてAndroid サーフェス情報をレンダリングする。ステップ1122で、コンソールアプリケーション1102は、レンダラオブジェクト1124のリモート処理可能なインタフェースをSurfaceFligner 434に登録し、Androidアプリケーションに関するサーフェス情報の描画通知を受け取るようにする。1つの実施形態において、レンダラオブジェクトとリモート処理可能なインタフェースには、draw()及びclear()メソッドが含まれ、これはIPCチャネル525を通じてコールすることができる。ステップ1126と1128で、SurfaceFlingerは、IPCオブジェクトをサーフェスに貼付し、サーフェス情報が更新された時に、リモート処理可能なインタフェースを通じてコンソールアプリケーション1102に通知が行われるようにする。
ステップ1130と1132は、プロセスフロー1100のレンダリングループの一部である。レンダリングループの中で、SurfaceFlingerはコンソールアプリケーション1102に対し、サーフェス情報が更新されたことを通知し、IPCチャネル525を通じて、そのサーフェス情報のファイル記述子を送る。例えば、コンソールアプリケーションレンダラの描画メソッドがコールされ、そのサーフェスのファイル記述子が送られてもよい。コンソールアプリケーション1102は、ファイル記述子をそのプロセス空間にマッピングし、参照された共有メモリ位置にアクセスして、サーフェス情報を読み出し、Hydroid OS 660に関連する第二のコンピューティング環境のディスプレイ上に表示されるべきグラフィクスフレームをレンダリングする。
図12は、各種の実施形態による、非拡張レンダリングコンテキストでの異環境間レンダリングの他の例示的方法のフロー1200を示す。図10の方法1000と同様に、実施形態では、どちらも第一のオペレーティングシステムのためにコンパイルされ、その中でアクティブに同時動作中の第一のアプリケーションと第二のアプリケーションのアプリケーショングラフィクスの表示が維持される。
方法1200はブロック1204で、第一のオペレーティングシステムの第一のレンダリングコンテキストを作成することから始まる。レンダリングコンテキストは、それが関連するディスプレイに固有のものであってもよい。例えば、モバイルOSの実行は、特定の解像度を有するモバイルデバイスディスプレイに関連付けることができる。レンダリングコンテキストは、関連するディスプレイの解像度にマッチするように作成してもよく、それによってグラフィクスはその解像度に合わせて適正にレンダリングされる。ブロック1208で、方法1200は、第一のオペレーティングシステムを使って、第一のアプリケーションのサーフェスの更新を計算する。前述のように、サーフェスの更新を計算するには、アプリケーションのデータを使って、どのサーフェスがどのように変化したかが判断される。
第一のアプリケーションの更新後のサーフェスは、次にブロック1212で、第一のオペレーティングシステムを使ってレンダリングされ、第一のメモリ位置に第一のグラフィクスフレームが生成される。レンダリングでは一般に、グラフィクスプリミティブが、表示されるグラフィクスフレームを形成するビット(例えば、ビットマップ)に変換される。例えば、サーフェス情報は形状、大きさ、色、層の重なり順(すなわち、その前または後ろに、他の何れのサーフィスがあるか)、透明度等、各サーフェスの特性を数学的に定義する。OSのレンダリングエンジンは、サーフェスデータを解釈し、レンダリングコンテキストの中の各位置(例えば、「X、Y」位置)においてどのビットを表示するかを、全サーフェス情報のレンダリングに応じて(例えば、繰り返しによる合成、レイトレーシング、及び/またはその他の手法を使用して)判断できる。第一のアプリケーションの更新後のサーフェスを、第一のレンダリングコンテキストを使ってビットマップの中にレンダリングし、第一のメモリ位置(例えば、フレームバッファメモリ、共有メモリ、またはその他の有益なメモリ位置)の中に格納されるようにすることができる。
いくつかの実施形態において、ブロック1216で、第一のグラフィクスフレームが第一のメモリ位置から第一のオペレーティングシステムに関連する第一のコンピューティング環境のディスプレイに表示される。例えば、モバイルデバイスディスプレイのためのディスプレイドライバが、関連するフレームバッファメモリにアクセスして、第一のレンダリングコンテキストで生成されたビットマップを表示する。ブロック1220において、第一のレンダリングコンテキストは解体される(例えば、破壊される)。
ブロック1224で、第一のオペレーティングシステムの第二のレンダリングコンテキストが作成される。いくつかの実施例で、第二のレンダリングコンテキストは、第一のレンダリングコンテキストと同じである。しかしながら、第二のレンダリングコンテキストはまた、第二のコンピューティング環境のディスプレイ(例えば、デスクトップディスプレイ)の特徴に応じて作成されてもよい。ブロック1228で、第二のアプリケーションのサーフェスの更新が、第一のオペレーティングシステムを使って計算される。ブロック1232で、これらの更新が次に第一のオペレーティングシステムの第二のレンダリングコンテキストでレンダリングされ、第二のメモリ位置に第二のグラフィクスフレームが生成される。特に、第二のメモリ位置は、モバイルデバイスの共有カーネル上で同時動作中の第一のオペレーティングシステムと第二のオペレーティングシステムの両方によりアクセス可能な共有メモリ位置である。
いくつかの実施形態において、ブロック1236で、第二のグラフィクスフレームが第二のメモリ位置から第二のオペレーティングシステムに関連する第二のコンピューティング環境のディスプレイに表示される。特筆すべき点として、図10とは異なり、両方のアプリケーションの更新されたグラフィクスフレームは、第一のOSのレンダリングエンジンを使ってレンダリングされる。例えば、第二のOSのコンソールアプリケーションは、第二の共有メモリ位置にアクセスして、第二のコンピューティング環境のディスプレイに表示するためにレンダリングされたビットマップを直接呼び出すことができる。ブロック1240で、第二のレンダリングコンテキストが解体される。
いくつかの実施形態において、方法1200はブロックを繰り返し処理して、両方のアプリケーションのためのグラフィクス環境を同時に維持する。例えば、モバイルOSは、第一のアプリケーションに関するレンダリングコンテキストの作成、使用、破壊を繰り返し、その後、第二のアプリケーションに関するレンダリングコンテキストを作成し、使用し、破壊する。この技術を使用して、すべてのレンダリングを1つのOSによって(すなわち、第一のOSのレンダリングエンジンによって)実行することができ、もう一方のOSのレンダリング機能を提供または使用する必要がない。しかしながら、この技術では、レンダリングコンテキストを繰り返し作成し、破壊することに伴う追加の間接費が発生する。
異環境間レンダリングの上記の実施形態は、非拡張レンダリングコンテキストを使用して、第一のOS上で動作中のアプリケーションに関するグラフィクスフレームが、複数のOSに基づくコンピューティング環境の中の第二のOSのユーザ操作空間のコンソールウィンドウに表示される方法を説明している。このような異環境間アプリケーションのユーザ操作をサポートするために、実施形態では、入力イベントを第二のOSのユーザ操作空間から第一OSにリダイレクトし、異環境間アプリケーションが入力イベントを、それが第一のOSのユーザ操作空間から送られているかのように受け取るようにする(すなわち、アプリケーションは入力イベントを、それが第一のOSのユーザ操作空間内で表示された場合にユーザ入力の受け取りに使用するものと同じイベントハンドラ及び/またはビューを通じて受け取る)。
図7と8に戻ると、デスクトップOS 160は、デスクトップコンピューティング体験に適した第二の端末環境840を通じて、第二のユーザ操作空間を提供するように構成される。前述のように、上記の異環境間レンダリングの実施形態を用いれば、アプリケーション752はモバイルOS 130のユーザ操作空間に表示されてもよく、その一方で、モバイルOS 130上で動作中のアプリケーション754は、デスクトップOS 160上で動作中のコンソールアプリケーション782を通じて第二のユーザ操作空間のコンソールウィンドウ882に表示される。特に、アプリケーション752と754は、モバイルOSランタイム環境内で動作中であり、モバイルOSフレームワークを通じて入力イベントを受け取る、モバイルOS 130のためにコンパイルされたどのようなアプリケーションであってもよく、表示するため、または遠隔的に(モバイルOS 130のユーザ操作空間以外で)操作するために変更を加える必要がない。
図13は、各種の実施形態による、異環境間アプリケーションのユーザ操作をサポートするためのOSアーキテクチャ構成300bを示す。OSアーキテクチャ構成300bにおいて、共有カーネル320のデバイスドライバは、第二の端末環境840を構成するI/Oデバイス844、846及び/または848のためのハードウェアインタフェースを実装する。デバイスドライバを通じて、これらのデバイスの入力イベントが、共有カーネル320のI/Oデバイス1360のデバイス1364、1366及び/または1368に現れる。共有カーネル320のシステムリソースは、モバイルOS 130とデスクトップOS 160の両方で利用できることから、モバイルOSは、入力デバイス1364、1366及び/または1368の入力イベントがモバイルOS 130に対するものであるか否かを判断する。デスクトップOS 160が第二のユーザ操作空間を提供するように構成されている(すなわち、モバイルコンピューティングデバイス110が第二の端末環境840にドッキングされている)場合、モバイルOS 130は、第二のユーザ操作空間に関連する入力デバイスからの入力イベントを無視する。OSアーキテクチャ構成300bにおいて、モバイルOS 130は、デバイス1364、1366及び/または1368からの入力イベントを無視する。この場合、デスクトップOS 160がデバイス1364、1366及び/または1368からの入力イベントを受け入れる。
デスクトップOS 160は、デバイス1364、1366及び/または1368からの入力イベントを処理し、このイベントをデスクトップOS 160内の各種のウィンドウまたはGUI要素にどのように分配するかを判断する。例えば、デスクトップOS 160のウィンドウシステム774は、デバイス1364、1366及び/または1368からの入力イベントを受け入れてもよい。1つの実施形態において、デスクトップOS 160のグラフィクスシステムは、Xウィンドウグラフィクスシステムである。
1つの例において、ユーザは、コンソールアプリケーション782のコンソールウィンドウ882の中の画面位置でポインティングデバイスのボタンをクリックする。これに対応する入力イベントがデバイス1368に現れ、デスクトップOS 160はこの入力イベントを受け取って、処理する。ウィンドウシステム774は、入力イベントをコンソールアプリケーション782に送り、これを通じて、モバイルOS 130上で動作中のアプリケーション754が、異環境間レンダリングの実施形態を使って表示される。前述のように、アプリケーション754はモバイルアプリケーションであり、モバイルOS 130の入力待ち行列736からの入力を受け取るモバイルOS 130のライブラリを使って、ビューとその他のイベントハンドラのインスタンスを作成し、ユーザ入力を受け取る。入力イベントをアプリケーション754に、アプリケーション754がその入力イベントを適正に解釈できるような方法で提示するために、コンソールアプリケーション782は、入力イベントをモバイルOS 130のグラフィクスコンテキストにマッピングし、仮想入力デバイス1370を通じてこのイベントをモバイルOS 130の入力待ち行列736に送る。仮想入力デバイス1370はモバイルOS 130にとって、モバイルOS 130のための適正な入力イベントプロトコルを有する入力デバイスに見える。これに加えて、入力イベントは、コンソールアプリケーション782によって、モバイルOS 130のグラフィクスコンテキストに関連するようにフォーマットされる。モバイルOS 130は、仮想入力デバイス1370をアプリケーション754に関連付け、アプリケーション754がモバイルOSのイベント待ち行列から入力イベントを受け取るようにする。例えば、モバイルOS 130は、仮想入力デバイス1370をアプリケーション754の仮想ディスプレイIDに関連付けてもよい。このようにして、アプリケーション754は、アプリケーション754がモバイルOS 130のユーザ操作空間を通じて表示、操作されるかのように、入力イベントを受け取り、処理する。
図14は、各種の実施形態による、非拡張グラフィクスコンテキストを使ってレンダリングされる異環境間アプリケーションのためのユーザ操作をサポートする態様を示す。方法1400は、ブロック1402で、入力イベントをモバイルコンピューティングデバイス110に接続された入力デバイス(例えば、キーボード846、ポインティングデバイス848)から受け取ることから始まる。前述のように、入力イベントは共有カーネル内の入力デバイスに現れてもよい。ブロック1404で、モバイルOSは、モバイルコンピューティングデバイス110がドッキングされ、デスクトップOSが入力デバイスに関連付けられているか否かを判断する。例えば、モバイルコンピューティングデバイス110が第二の端末環境にドッキングされておらず、デスクトップOSが一時停止している場合、モバイルOSは、デスクトップが入力デバイスに関連付けられていないと判断することができる。デスクトップOSが一時停止しているか、入力デバイスがデスクトップOSに関連する第二の端末環境の一部ではない場合、ブロック1406で、モバイルOSが入力デバイスからの入力コマンドを受け入れる。
デスクトップOSが一時停止しておらず、入力デバイスがデスクトップOSに関連する第二の端末環境の一部である場合、ブロック1408で、モバイルOSは入力デバイスの入力イベントを無視し、デスクトップOSがその入力イベントを受け入れる。ブロック1410で、デスクトップOSは入力イベントを、デスクトップOS内の適当なウィンドウかGUI要素に分配する。入力イベントがコンソールウィンドウに送られなければ、ブロック1412で、この入力イベントは他のウィンドウまたはGUI要素に送られる。入力イベントがコンソールウィンドウに送られた場合(例えば、ユーザがポインティングデバイスをコンソールウィンドウ領域の中でクリックする)、ブロック1414で、この入力イベントが入力イベントとしてコンソールアプリケーションに送られる。
ブロック1416で、仮想入力デバイスが、コンソールアプリケーションからの入力イベントのために生成される。仮想入力デバイスは共有カーネルの中に生成されてもよく、または入力イベントがモバイルOS入力デバイスの中に直接書き込まれてもよい。ブロック1418で、コンソールアプリケーションは入力イベントをモバイルOSのグラフィクスコンテキストにマッピングする。例えば、コンソールアプリケーションは、コンソールアプリケーションのコンソールウィンドウの中の入力イベントの位置を、モバイルOSのグラフィクスコンテキストの中の位置にマッピングしてもよい。コンソールアプリケーションは、その入力イベントを、モバイルOSのための入力フォーマットまたは入力モードステートに変換してもよい。例えば、入力フォーマットは、デスクトップOSとモバイルOSの間で異なっていてもよい。共通の入力フォーマットであっても、デスクトップOSとモバイルOSは異なる入力モードステートを有していてもよい。例えば、デスクトップOSは、ノンタッチモードの入力ステートを使って入力イベントを処理していてもよく、その一方で、モバイルOSはタッチモード入力ステートである。この場合、デスクトップOSのユーザ操作空間内でポインティングデバイスにより生成された入力イベントは、仮想入力デバイスにジェスチャベースイベントとして現れるように変換されてもよい。
ブロック1420で、仮想入力デバイスは、モバイルOSの中で、コンソールウィンドウに表示されるそのアプリケーションのための仮想ディスプレイデバイスに関連付けられる。例えば、複数のアプリケーションがモバイルOS上で動作中であり、デスクトップOSのユーザ操作空間の異なるコンソールウィンドウに表示されていてもよい。デスクトップOSのユーザ操作空間の中の別々のコンソールウィンドウに表示された各アプリケーションには、モバイルOS内の仮想ディスプレイIDが割り当てられる。そのため、モバイルOSが仮想デバイスを通じてデスクトップOSのコンソールアプリケーションから入力イベントを受け取ると、モバイルOSは、仮想ディスプレイIDを通じて、その仮想デバイスを正しいアプリケーションにマッピングすることができる。ブロック1422で、入力イベントは仮想ディスプレイに関連するアプリケーションに送られ、このアプリケーションはその入力イベントを、それがモバイルOSのユーザ空間を通じて発生したかのように処理することができる。特に、上記の方法は、モバイルOS 130の何れのアプリケーションにも利用でき、アプリケーションは、デスクトップOSのコンソールアプリケーションを通じて入力イベントを受け入れるように特に設計されている必要がない。
拡張レンダリングコンテキストによる実施形態
いくつかの実施形態は、第一のオペレーティングシステムの中で拡張レタリングコンテキストを作成することによって、複数のOSにまたがる同時ユーザインタフェースのサポートを扱う。前述のように、第一のOS(例えば、モバイルOSであるAndroid)は一般に、単独のアクティブレンダリングコンテキストで、単独のアクティブユーザ操作空間を定義するように構成される。本明細書では、多数のいわゆる「コンテキスト空間」を1つの拡張レンダリング空間にタイリングし、各コンテキスト空間を異なるディスプレイに関連付けることによって、第一のOSを、同時に扱われる複数のユーザ操作空間に有効にフーリングするための新規な技術を説明する。実施形態には、複数のユーザ操作空間へのディスプレイ出力を処理するための技術と、これらのコンテキストでユーザ操作を処理する技術が含まれる。
拡張レンダリングコンテキストによる実施形態
いくつかの実施形態は、第一のオペレーティングシステムの中で拡張レタリングコンテキストを作成することによって、複数のOSにまたがる同時ユーザインタフェースのサポートを扱う。前述のように、第一のOS(例えば、モバイルOSであるAndroid)は一般に、単独のアクティブレンダリングコンテキストで、単独のアクティブユーザ操作空間を定義するように構成される。本明細書では、多数のいわゆる「コンテキスト空間」を1つの拡張レンダリング空間にタイリングし、各コンテキスト空間を異なるディスプレイに関連付けることによって、第一のOSを、同時に扱われる複数のユーザ操作空間に有効にフーリングするための新規な技術を説明する。実施形態には、複数のユーザ操作空間へのディスプレイ出力を処理するための技術と、これらのコンテキストでユーザ操作を処理する技術が含まれる。
非拡張レンダリングコンテキストによる実施形態に関して上述した例に戻り、再び、カレンダアプリケーションとワードプロセシングアプリケーションがどちらも第一のOS(例えば、モバイルOSであるAndroid OS)のためにコンパイルされ、どちらもモバイルデバイスの第一のOS内で同時動作中であると仮定する。第二のOS(例えば、Hydroidのような非モバイルOS)は、共有カーネルを使って、モバイルデバイス上で同時に動作している。ユーザは、モバイルデバイスを第二のデスクトップコンピューティング環境にドッキングしており、デスクトップコンピューティング環境は、第二のOSのためのユーザ操作空間に関連付けられ、このユーザ操作空間を表示している。ユーザは、第二のOSのデスクトップコンピューティング環境を通じて、第一のOS上で動作中のワードプロセシングアプリケーションを操作したいと希望する。デスクトップコンピューティング環境のユーザ操作空間を、モバイルコンピューティング環境(例えば、モバイルデバイス)の第二のOSを使って、ユーザにとってわかりやすい方法で扱うことが望ましい。
図15は、各種の実施形態による、拡張レンダリングコンテキストを使って複数のOSにまたがる同時ユーザインタフェースをサポートする態様を示す。図15に示されるアプリケーションレンダリングの概略図1500において、第一のアプリケーション1510(例えば、カレンダアプリケーション)は、第一のOS内の第一のサーフェス1512の更新を計算する。第一のサーフェス1512は、第一のOSによって共有メモリ空間内の第一メモリ位置に格納される。具体的には、第一のアプリケーション1510は、第一のサーフェス1512のバックバッファ1514を更新する。同様に、第二のアプリケーション1530(例えば、ワードプロセシングアプリケーション)は、第一のオペレーティングシステムを使って第二のサーフェス1532の更新を計算する。ここでも、第二のアプリケーション1530による第二のサーフェス1532への更新がバックバッファ1534に対して行われる。第二のサーフェス1532は、第一のOSによって共有のメモリ空間の中の第二のメモリ位置に格納される。
第一のOSは、いつサーフェス情報が変化したかを判断し、レンダリングシーケンスを開始する。第一のOSは、特定のアプリケーションに関連するサーフェス情報がいつ変化したかを判断して、第一のサーフェス1512と第二のサーフェス1532を含む全サーフェスについて1ループを実行してもよい。レンダリングシーケンスの中で、第一のOSは、いつサーフェス情報が変化したかを判断し、第一のサーフェス1512のフロントバッファ1516とバックバッファ1514及び第二のサーフェス1532のフロントバッファ136とバックバッファ1534をスワップする。第一のOSは、共有メモリ空間の中の第三のメモリ位置で拡張レンダリングコンテキスト1520を作成し、第一のサーフェス1512を拡張レンダリングコンテキスト1520の第一のコンテキスト空間1522の中にレンダリングする。第一のOSは、第二のサーフェス1533を拡張レンダリングコンテキスト1520の第二のコンテキスト空間1524の中にレンダリングする。
実施形態において、拡張レンダリングコンテキスト1520は、メモリ空間の中で第一のOSのフレームバッファと重複してもよい。例えば、拡張レンダリングコンテキスト1520の第一のコンテキスト空間1522のメモリ位置は、第一のOSのフレームバッファと同じ範囲を占めていてもよい。第一のOSは、最終的な画像が第三のメモリ位置にレンダリングされたという通知を第二のOSに送る。例えば、第一のOSは、拡張コンテキスト1520の第二のコンテキスト空間1524の共有メモリ位置のファイル記述子を、プロセス間通信チャネルを通じて第二のOSのコンソールアプリケーションに送ってもよい。第二のOSは第三のメモリ位置の拡張グラフィクスコンテキストの第二の部分にアクセスして、レンダリングされたグラフィクスフレーム1538を呼び出し、第二のOSのコンソールウィンドウ1540の中に表示されるようにする。例えば、第二のOSのコンソールアプリケーションは、ファイル記述子をそのプロセス空間にマッピングし、第三のメモリ位置からレンダリングされたグラフィクスフレームを読み出し、第二のOSのユーザ操作空間内で表示されるようにする。このようにして、第二のOSは、第二のアプリケーションのレンダリングされたグラフィクスフレームを、そのユーザ操作空間内にリアルタイムで表示する。
図16は、各種の実施形態による、拡張レンダリングコンテキストを用いて異環境間レンダリングを行う例示的な方法のフロー1600を示す。実施形態では、第一のアプリケーション(例えば、カレンダアプリケーション)と第二のアプリケーション(例えば、ワードプロセシングアプリケーション)のアプリケーショングラフィクスの表示が維持される。どちらのアプリケーションも、第一のオペレーティングシステム(例えば、Android OS)のためにコンパイルされ、その中でアクティブに同時動作中であるが、ユーザは、第二のOSに関連する第二のコンピューティング環境を通じて、第二のアプリケーションを操作したいと望んでいると仮定する。特に、これらの技術は、2つのOSが非互換的である(例えば、第一のOS用にコンパイルされたアプリケーションは、直接第二のOSで実行できない)環境に利用できる。いくつかの実施例では、前述のように、2つのOSはモバイルデバイスの共有カーネル上で独立して、同時に動作している。
方法1600は、ブロック1604で、第一のOSの拡張レンダリングコンテキストを作成することから始まる。前述のように、レンダリングコンテキストは一般に、1つのアクティブディスプレイの特徴に合わせて作成される。しかしながら、拡張レンダリングコンテキストは、第一のアプリケーションに関連する第一のコンテキスト空間と第二のアプリケーションに関連する第二のコンテキスト空間を有するように作成される。第一と第二のコンテキスト空間は重複しない。
いくつかの実施形態において、拡張レンダリングコンテキストは、ローカルデバイスのアクティブディスプレイ(例えば、共有カーネルを有するモバイルデバイスのティスプレイ)と何れかの仮想ディスプレイ(すなわち、第二のOSのユーザ操作空間内で表示されるコンソールウィンドウに関連する第一のOSのディスプレイ)をタイリングして、第一のOSにとって、1つの大きなディスプレイに見えるものを形成することによって生成される。拡張レンダリングコンテキストの中の領域は、重複しないコンテキスト空間として指定され、その各々の物理的または仮想ディスプレイとの関連付けが維持される。特に、いくつかの実施形態において、異なるコンテキスト空間は、異なる解像度またはその他の特徴を有していてもよい。また、特定の実施形態において、コンテキスト空間は連続していない。例えば、拡張レンダリングコンテキストは、各コンテキスト空間の間に、どのコンテキスト空間にも割り当てられない空間が残されるような方法で作成される。
ブロック1608で、第一のオペレーティングシステムを使って、第一のアプリケーションと第二のアプリケーションのサーフェスの更新が計算される。更新後のサーフェスは次に、ブロック1612で、第一のオペレーティングシステムを使ってレンダリングされ、第一のオペレーティングシステムと第二のオペレーティングシステム(例えば、共有カーネル上で同時動作中であってもよい)によってアクセス可能な共有メモリ位置で拡張グラフィクスフレームが生成される。拡張グラフィクスフレームの第一の部分は(第一のアプリケーションに関連する)第一のコンテキスト空間に関連付けられ、拡張グラフィクスフレームの第二の部分は(第二のアプリケーションに関連する)第二のコンテキスト空間に関連付けられる。ブロック1608でレンダリングが行われる際、第一のアプリケーションの更新後のサーフェスは、拡張グラフィクスフレームの第一の部分にレンダリングされ、第二のアプリケーションの更新後のサーフェスは、拡張グラフィクスフレームの第二の部分にレンダリングされる。特筆すべき点として、このようにして、拡張グラフィクスフレームには、その適当なコンテキスト空間の中にタイリングされた両方のアプリケーションのレンダリングされたサーフェスが有効に含まれる。
いくつかの実施形態において、ブロック1616で、拡張グラフィクスフレームのうち、第一のコンテキスト空間に関連する第一の部分が、共有メモリ位置から第一のOSに関連する第一のコンピューティング環境のディスプレイに表示される。例えば、前述のように、共有メモリ位置はモバイルデバイスのフレームバッファメモリであり(またはフレームバッファメモリにコピーされ)、モバイルデバイスのディスプレイデバイスドライバがそのフレームバッファメモリにアクセスして、拡張グラフィクスフレームの第一の部分をそのディスプレイに表示する。さらに、いくつかの実施形態において、ブロック1620で、拡張グラフィクスフレームのうち、第二のモーション空間に関連する第二の部分が、共有メモリ位置から第二のオペレーティングシステムに関連する第二のコンピューティングデバイスのディスプレイに表示される。例えば、前述のように、共有メモリ位置は第二の(例えば、デスクトップ)コンピューティング環境に関連する第二のOSのフレームバッファメモリの中にコピーされ、ディスプレイデバイスドライバは、拡張グラフィクスフレームの第二の部分を第二のコンピューティング環境のディスプレイに表示する。
図12に関して説明した実施形態において、第二のアプリケーションの更新後のグラフィクスのレンダリングは、第二のOSによって遠隔的に行われる。図15に関して説明した実施形態において、両方のアプリケーションのレンダリングがモバイルデバイスのレンダリングエンジンによってローカルで実行されるが、レンダリングコンテキストは継続的に作成され、解体される。図16に関して説明した実施形態によれば、両方のアプリケーションのレンダリングがモバイルデバイスのレンダリングエンジンによってローカルで実行され、その一方で、拡張はされているが、単独のレンダリングコンテキストが維持される(すなわち、レンダリングコンテキストが解体されない)。
図17は、各種の実施形態による、拡張レンダリングコンテキストを使用する異環境間レンダリングの他の例示的な方法のフロー1700を示す。図16の方法1600と同様に、実施形態では、どちらも第一のオペレーティングシステムのためにコンパイルされ、アクティブに同時動作中の第一のアプリケーションと第二のアプリケーションのためのアプリケーショングラフィクスのディスプレイが維持される。方法1700は、ブロック1704で、第一のオペレーティングシステムの拡張レンダリングコンテキストを作成することから始まり、ブロック1708で、第一のオペレーティングシステムを使って、第一のアプリケーションと第二のアプリケーションのサーフェスの更新が計算される。前述のように、拡張レンダリングコンテキストは、第一のアプリケーションに関連する第一のコンテキスト空間と第二のアプリケーションに関連する第二のコンテキスト空間を有するように作成される。第一と第二のコンテキスト空間は重複しない。いくつかの実施例では、ブロック1704と1708はそれぞれ、ブロック1604と1608と実質的に同じ方法で実行される。
ブロック1712で、第一のアプリケーションの更新後のサーフェスが、第一のオペレーティングシステムを使って、第一のコンテキスト空間に従ってレンダリングされ、第一のオペレーティングシステムのフレームバッファに第一のグラフィクスフレームが生成される。たとえは、第一のコンテキスト空間は、特定の解像度、特定のタイリングオフセット(例えば、「X」位置から始まる)等に関連付けられてもよい。いくつかの実施形態において、第一のグラフィクスフレームは、図16の方法1600の拡張グラフィクスフレームのそれぞれの部分の生成と実質的に同じ方法で生成される。いくつかの実施形態において、ブロック1716で、第一のコンテキスト空間に関連する第一のグラフィクスフレームが、フレームバッファから第一のオペレーティングシステムに関連する第一のコンピューティング環境のディスプレイに表示される。
ブロック1720で、第二のアプリケーションの更新後のサーフェスが、第一のオペレーティングシステムを使ってレンダリングされ、共有メモリ位置に第二のグラフィクスフレームが生成される。前述のように、共有メモリ位置は第一のオペレーティングシステムと第二のオペレーティングシステム(例えば、これらは共有カーネル上で同時動作中であってもよい)によってアクセス可能である。いくつかの実施形態において、ブロック1724で、第二のモーション空間に関連する第二のグラフィクスフレームが、共有メモリ位置から第二のオペレーティングシステムに関連する第二のコンピューティング環境のディスプレイに表示される。
特に、図16と17の両方の実施形態では、各アプリケーションのコンテキスト空間を有する拡張レンダリングコンテキストが作成される。しかしながら、図16の方法1600は、すべてのグラフィクスの更新を1つの拡張ビットマップにレンダリングするが、図17の方法1700は、グラフィクスの更新を別のビットマップにレンダリングする。一方または他方の技術のどちらが望ましいかは、例えばメモリの管理及び/またはアクセス方法によって異なる。
図12の実施形態と同様に、図16と17の実施形態においては、両方のアプリケーションの更新後のグラフィクスフレームが第一のOSのレンダリングエンジンを使ってレンダリングされる。第一のOSのレンダリングエンジンを使用することにより、両方のアプリケーションに第一のOSで利用可能なモバイルデバイスのハードウェア加速機能を使用できる。例えば、図12、16及び/または17の実施形態において、第一と第二のアプリケーションの何れかまたは両方を、2Dまたは3Dハードウェア支援レンダリングを使って、第一のOSによりレンダリングしてもよい。
拡張レンダリングコンテキストを使って第一のOS(すなわち、モバイルOSであるAndroid)上で動作するアプリケーションのためのグラフィクスフレームを遠隔的に表示することにより、第一のOSが1つのレンダリングコンテキストを使って、複数のユーザ操作空間内で表示するように、複数のアプリケーションのためのレンダリングを提供できる。しかしながら、拡張レンダリングコンテキストでは、拡張レンダリングコンテキストを通じて表示されるアプリケーションに関する入力イベントの取扱いに関する問題が発生する。具体的には、第一のOSの入力待ち行列は、拡張レンダリングコンテキストの別の仮想ディスプレイを通じて表示される複数のアプリケーションからの複数の入力イベントを取り扱うように構成しなければならない。
異環境間ユーザ操作のサポートの実施形態は、第一のOS上で動作し、第一のOSの拡張レンダリングコンテキストを通じて複数の別々のユーザ操作空間(すなわち、モバイルデバイスユーザ操作空間とデスクトップOSのユーザ操作空間)で表示される複数のアプリケーションに関するユーザ入力イベントを処理することに関する。実施形態には拡張入力待ち行列が含まれ、そこでは遠隔的に表示されるアプリケーションのための仮想入力デバイスからの入力イベントがその入力待ち行列の中の別々のモーション空間にマッピングされる。例えば、第一のアプリケーション(例えば、カレンダアプリケーション)が第一のOS上で動作中であり、第一のデバイスに関連する第一のディスプレイ(例えば、第一のOSが動作中のモバイルデバイスのディスプレイ)に表示されている。第二のアプリケーション(例えば、ワードプロセシングアプリケーション)も、第一のアプリケーションと同時動作中であるが、拡張レンダリングコンテキストのコンテキスト空間(例えば、仮想ディスプレイ)の中でレンダリングされ、モバイルデバイスの共有カーネル上で第一のOSと同時動作中の第二のOSの第二のユーザ操作空間に表示されている。第一のOSは、第一のコンテキスト空間(すなわち、モバイルデバイスディスプレイ)の中の第一のアプリケーションと第二のコンテキスト空間の第二のアプリケーションの両方に関するアプリケーショングラフィクスを含む拡張レンダリングコンテキストを通じて、グラフィクスフレームをレンダリングする。第二のコンテキスト空間は、第二のOS上で動作中のコンソールアプリケーションを通じて第二のOSのユーザ操作空間に表示される。
拡張レンダリングコンテキストを通じて遠隔的に表示されるアプリケーションに関する入力イベントは、非拡張グラフィクスコンテキストに関して上述したものと同じ方法で、第二のOS(すなわち、デスクトップOSであるHydroid)によって受け取られ、第二のOSのコンソールアプリケーションによって仮想入力デバイスに送られる。しかしながら、前述のように、仮想入力デバイスからモバイルOSで受け取られた入力イベントは、第二のOSのユーザ操作空間内に表示されるコンソールウィンドウに関係する。仮想入力デバイスは、拡張入力待ち行列の中の、遠隔的に表示されたアプリケーションに対応する仮想ディスプレイに関連するモーション空間にマッピングされる。拡張入力待ち行列によって、第一のOSは、1つの入力待ち行列を使って、同時動作する複数のアプリケーション用として意図された複数のローカル及び仮想入力デバイスからの入力を正しく処理することができる。
図18aと18bは、各種の実施形態による、拡張レンダリングコンテキストを用いた異環境間アプリケーションのユーザ操作サポートの態様を示す。図18aは、第一のOS上で動作中のアプリケーションを遠隔的に表示しているユーザ操作空間1810(例えば、第一のOSで動作中のアプリケーションを表示している第二のOSのGUI)を示している。例えば、第一と第二と第三のアプリケーションが第一のOS上で動作していても(すなわち、第一のOSでアクティブに同時動作中であっても)よい。第一のOSは、上述の実施形態により、第一と第二と第三のアプリケーションを、第一のOSの拡張レンダリングコンテキストの第一と第二と第三のコンテキスト空間に表示してもよい。ユーザ操作空間1810のコンソールウィンドウ1812と1814はそれぞれ、第一のOSの中で動作中の第二のアプリケーションと第三のアプリケーションを表示していてもよい。
図18bは、第一のOS上で動作中の各アプリケーションのためのユーザ操作をサポートする、第一のOSの拡張入力待ち行列1840を示す。拡張入力待ち行列1840には、第一のモーション空間1842、第二のモーション空間1844、第三のモーション空間1846が含まれる。第一のモーション空間は第一のOSの拡張レンダリングコンテキストの第一のコンテキスト空間に関連付けられ、これは一般に、第一のOSの非仮想ディスプレイ1852を表示するために使用される(すなわち、モバイルコンピューティングデバイス110のディスプレイ116に関連するコンテキスト空間)。第二と第三のモーション空間はそれぞれ、仮想ディスプレイ1854、1856に関連付けられ、これらは第二と第三のコンテキスト空間を通じてレンダリングされる。
遠隔的に表示されているアプリケーションのコンソールウィンドウに送られる入力イベントが発生すると、この入力イベントは、そのアプリケーションが表示される仮想ディスプレイに関連するモーション空間へと送られる。例えば、ユーザが、入力イベント1820によって示されるように、ユーザ操作空間1810のコンソールウィンドウ1812でポインティングデバイスをクリックすると、第二のOSのウィンドウシステムがその入力イベントを、コンソールウィンドウ1812に関連するコンソールアプリケーションに送る。前述のように、コンソールアプリケーションは入力デバイスを仮想入力デバイスにマッピングする。しかしながら、この入力イベントはコンソールウィンドウ1812に関係している。この入力イベントが第一のOSの入力待ち行列に直接供給された場合、この入力イベントは正しいアプリケーションイベントハンドラに送られないであろう。そのため、仮想入力デバイスからの入力イベント1820は第二のモーション空間1844にマッピングしなおされる。このようにして、拡張入力待ち行列はその入力イベントを第二のアプリケーションのイベントハンドラに送り、これが入力イベント1820を受け取り、処理する。
実施形態において、仮想ディスプレイはモバイルOSの入力待ち行列の中でオフセットされる。例えば、図18bにおいて、仮想ディスプレイ1854と1856は、モバイルOSの入力待ち行列1840の中の仮想ディスプレイオフセット1858の分だけオフセットされる。仮想ディスプレイオフセット1858は、仮想ディスプレイが入力待ち行列内で隣接して現れるのを防止するものであり、隣接して現れた場合、1つの仮想ディスプレイ用として意図されたある入力イベントが、別のアプリケーションに関連するモーション空間内で解釈される可能性がある。仮想ディスプレイのオフセットは、実際の仮想ディスプレイの解像度のパラメータとして使用されないように、十分に大きくするべきである。1つ実施形態において、仮想ディスプレイのオフセット1858は10000ピクセルと選択される。
図19は、各種の実施形態による、拡張レンダリングコンテキストを通じて表示される異環境間アプリケーションに関する入力イベントを受け取る方法1900を示す。例えば、方法1900は、第一のOS内で動作中の第一のアプリケーションと第二のアプリケーションに関する入力イベントを処理するために使用してもよく、第一のOSの拡張レンダリングコンテキストを通じて、第一のアプリケーションは第一のOSのユーザ操作空間にローカルで表示され、第二のアプリケーションは第二のOSのユーザ操作空間に遠隔的に表示される。
方法1900は、ブロック1902で、第一のユーザ入力が第一のOSで受け取られることから始まり、この時、第一のアプリケーションと第二のアプリケーションは第一のOS内でアクティブに同時動作中であり、第一のアプリケーションが第一のOSに関連する第一のユーザ環境内で表示され、第二のアプリケーションが第二のOSに関連する第二のユーザ環境内で表示され、第一と第二のオペレーティングシステムは共有カーネル上で同時動作中であり、第一のOSは、拡張レンダリングコンテキストの第一の仮想ディスプレイを通じて第二のアプリケーションに関するグラフィクスフレームをレンダリングすることにより、第二のアプリケーションに関するアプリケーショングラフィクスを維持する。ブロック1904で、第一のOSは第一のモーション空間と第二のモーション空間を含む拡張入力待ち行列を作成し、第二のモーション空間は第一の仮想ディスプレイに対応する。例えば、第一のオペレーティングシステムは第二のアプリケーションのための第一の仮想ディスプレイを割り当て、第一のコンテキスト空間と第二のコンテキスト空間を有する拡張レンダリングコンテキストを作成し、第一の仮想ディスプレイを第二のコンテキスト空間に関連付け、上述の方法を用いて、拡張レンダリングコンテキストの第二のコンテキスト空間を通じて、第二のアプリケーションに関するグラフィクスフレームをレンダリングする。
ブロック1906で、第一のユーザ入力イベントが、第一のOSにより、第一の仮想入力デバイスにおいて、第二のOSを通じて第二のアプリケーションに関するレンダリングされたグラフィクスフレームを表示している、第二のOSで動作中の第一のコンソールアプリケーションから受け取られる。ブロック1908で、第一の仮想入力デバイスは、第一のオペレーティングシステムの拡張入力待ち行列の第二のモーション空間にマッピングされる。第一の仮想入力デバイスを第二のモーション空間にマッピングすることによって、第一のOSの拡張入力待ち行列は、第一の仮想入力デバイスからの入力イベントを第二のアプリケーションのビューの中のイベントハンドラに正しく関連付けることができる。具体的には、入力イベントが第二のモーション空間にマッピングされると、第一のOSはこの入力イベントを、拡張入力待ち行列の中の第二のアプリケーションに関連する位置で発生したものとして扱う。ブロック1910で、第一のOSは第一のユーザ入力イベントを、マッピングされた第一の仮想入力デバイスから第二のアプリケーションに送る。拡張入力待ち行列は、拡張レンダリングコンテキストがタイリングされるという性質を利用して、入力待ち行列が複数のユーザ操作空間からの複数の入力イベントを処理し、入力イベントを所期のアプリケーションの適当なイベントハンドラに送ることができるようにする。
ミラーリングされたコンテキストによる実施形態
拡張及び非拡張レンダリングコンテキストの実施形態を、複数のオペレーティングシステム上の複数のアプリケーションにわたる同時ユーザ操作空間を維持するという内容で説明した。多くの場合、1つのユーザ操作空間のためにコンテキストをミラーリングすることが望ましい。第二のOSに関連する第二のコンピューティング環境(例えば、Hydroid OSに関連するデスクトップ環境)の中で同時に第一のOSを見て、これを操作すること(すなわち、操作空間を「ミラーリング」すること)が望ましい。ミラーリングされたユーザ操作空間を通じて、ユーザは第一のOSを、ローカルデバイスを通じて操作するかのように操作できる(すなわち、ユーザは、利用可能なアプリケーションをブラウズし、アプリケーションを開始、停止し、第一のOSの検索機能を使用すること等ができる)。
ミラーリングされたコンテキストによる実施形態
拡張及び非拡張レンダリングコンテキストの実施形態を、複数のオペレーティングシステム上の複数のアプリケーションにわたる同時ユーザ操作空間を維持するという内容で説明した。多くの場合、1つのユーザ操作空間のためにコンテキストをミラーリングすることが望ましい。第二のOSに関連する第二のコンピューティング環境(例えば、Hydroid OSに関連するデスクトップ環境)の中で同時に第一のOSを見て、これを操作すること(すなわち、操作空間を「ミラーリング」すること)が望ましい。ミラーリングされたユーザ操作空間を通じて、ユーザは第一のOSを、ローカルデバイスを通じて操作するかのように操作できる(すなわち、ユーザは、利用可能なアプリケーションをブラウズし、アプリケーションを開始、停止し、第一のOSの検索機能を使用すること等ができる)。
第一のOS(例えば、モバイルOSであるAndroid)は一般に、単独のアクティブなユーザ操作空間を画定するように構成される。ユーザ操作空間は、アクティブディスプレイ(例えば、解像度等、関連する特徴を有する)と、ユーザがアクティブディスプレイ上に表示された要素を操作できるようにする1つまたは複数のアクティブ入力デバイスを含む。異環境間レンダリングを使って、複数のOSにわたって1つまたは複数のミラーリングされたユーザ操作空間を提供する新規な方法を提示する。前述のように、実施形態は、複数のOSが非互換的であり、及び/または共有カーネル上で独立して、並行動作している場合も動作できる。
ミラーリングされたコンテキストにより同時ユーザ操作のサポートを維持することは、異環境間アプリケーションのための同時ユーザ操作をサポートすることに関して上述したものと同じシステム要素の多くを用いて実現できる。例えば、図7を参照すると、モバイルOS 130のためのグラフィクスコンテキストは、モバイルOS130のアプリケーション(例えば、アプリケーション752及び/または754)及び/またはホーム画面(例えば、Android OS 430のホーム画面アプリケーション451)をアクティブに表示していてもよい。アクティブに表示されるモバイルOSのアプリケーション及び/またはホーム画面に関するサーフェス情報は、共有メモリ724の中に格納されてもよい。モバイルOS 130のミラーリングされたコンテキストは、コンソールアプリケーション782を通じて、デスクトップOS 160のユーザ操作空間に表示されてもよい。
図20は、様々な実施形態による、ミラーリングされたユーザ操作空間を提供するためのグラフィクスコンテキストの異環境間レンダリングの例示的な方法のフロー2000を示す。方法2000はブロック2004で、第一のオペレーティングシステムを使って、第一のオペレーティングシステムのためにコンパイルされ、その中でアクティブに動作中の第一のアプリケーションのサーフェス集合の更新を計算することから始まる。例えば、計算は、サーフェスの形状、大きさ、テクスチャ、レイヤリング等の変化を判断するために行われる。次に、ブロック2008で、サーフェスの更新が第一のオペレーティングシステムを使ってレンダリングされ、グラフィクスフレームが生成される。グラフィクスフレームは、そのアプリケーションに関する更新後のグラフィクス情報を反映するビットマップであってもよい。
ブロック2012で、グラフィクスフレームは、第一のオペレーティングシステムと第二のオペレーティングシステムの両方によりアクセス可能な共有メモリ位置に格納される。いくつかの実施形態において、第一と第二のOSは、共有カーネル上で同時動作中である。ブロック2016で、グラフィクスフレームは第一のオペレーティングシステムを使って、第一のコンピューティング環境の第一のディスプレイ上の第一のアプリケーションの第一のアプリケーションディスプレイに表示されてもよい。例えば、共有メモリの位置はフレームバッファメモリであってもよく、または第一のオペレーティングシステムのフレームバッファにコピーされてもよい。ローカルデバイス(例えば、共有カーネル上で動作中)のディスプレイデバイスドライバは、そのフレームバッファメモリにアクセスし、ビットマップを表示する。
ブロック2012で共有メモリ位置にグラフィクスフレームを格納した後、第二のOSに、更新されたグラフィクス情報が利用可能であると知らせることが望ましい。ブロック2020で、共有メモリ位置を特定するファイル記述子が、第二のOSのためにコンパイルされ、その中でアクティブに動作中のコンソールアプリケーションに送られる。いくつかの実施例において、ファイル記述子には、共有メモリ位置の識別が含まれる。他の実施例では、ファイル記述子には、ミラーリングされるアプリケーションに関する更新後のグラフィクス情報が利用可能であることを示すフラッグのような追加の情報が含まれる。
前述のように、コンソールアプリケーションは、Xウィンドウまたは、第二のコンピューティング環境のディスプレイのウィンドウ内に表示されるその他の種類のアプリケーションであってもよい。ブロック2024で、コンソールアプリケーションは、ファイル記述子による共有メモリ位置の更新後のグラフィクス情報(例えば、ビットマップ)にアクセスし、そのグラフィクスフレームを共有メモリ位置から第二のコンピューティング環境の第二のディスプレイ上の第一のアプリケーションの第二のアプリケーションディスプレイに表示する。いくつかの実施形態において、アプリケーションに関する更新後のグラフィクス情報は、第一と第二のコンピューティング環境の両方のディスプレイで実質的に同時に表示される。
図21は、様々な実施形態による、ミラーリングされたユーザ操作空間を提供するためのグラフィクスコンテキストの異環境間レンダリングの他の例示的な方法のフロー2100を示す。図20と同様に、方法2100はブロック2104で、第一のオペレーティングシステムを使って、第一のオペレーティングシステムのためにコンパイルされ、その中でアクティブに動作中の第一のアプリケーションのサーフェス集合の更新を計算することから始まる。フロック2108で、更新後のサーフェス集合が、第一のオペレーティングシステムと第二のオペレーティングシステム(例えば、共有カーネル上で同時動作中)の両方によってアクセス可能な共有メモリ位置に格納される。
ブロック2112で、更新後のサーフェス集合は第一のオペレーティングシステムでレンダリングされ、第一のグラフィクスフレームが生成される。次に、ブロック2116で、第一のグラフィクスフレームを、第一のオペレーティングシステムを使って、第一のコンピューティング環境の第一のディスプレイ上の第一のアプリケーションの第一のアプリケーションディスプレイに表示することができる。例えば、モバイルOS 130は、更新後のアプリケーショングラフィクスをレンダリングして、更新後のグラフィクスをモバイルデバイス110のディスプレイ116に表示する。
ブロック2108で更新後のサーフェス集合を共有メモリに格納した後、何れかの時点で、第二のOSに対して、更新後のグラフィクス情報が利用可能であると通知することが望ましい。ブロック2120で、共有メモリ位置を特定するファイル記述子が、第二のオペレーティングシステムのためにコンパイルされ、その中でアクティブに動作中のコンソールアプリケーションに送られる。特に、共有メモリ内に格納された情報は、図20の方法2000のようなレンダリングされたビットではなく、レンダリングされていないサーフェス情報(例えば、幾何プリミティブ)である。
従って、ブロック2124で、更新後のサーフェス集合は、第二のオペレーティングシステムによって(例えば、ファイル記述子によるコンソールアプリケーションを介して)共有メモリ位置からレンダリングされ、第一のグラフィクスフレームと実質的に同じ第二のグラフィクスフレームが生成される。ブロック2128で、第二のグラフィクスフレームは、第二のオペレーティングシステムのコンソールアプリケーションを介して、第二のコンピューティング環境の第二のディスプレイ上の第一のアプリケーションの第二のアプリケーションディスプレイに表示され、それによって、第二のアプリケーションディスプレイは第一のアプリケーションディスプレイと実質的に同じとなる。
特筆すべき点として、第一と第二のオペレーティングシステムシステムの両方でレンダリングを複製することから、追加の間接費が発生し得る。しかしながら、このような追加の間接費には、数多くの状況において、相応の価値がある可能性がある。例えば、異なるコンピューティング環境のディスプレイの特徴が顕著に異なる場合、各々がそれぞれのディスプレイに適した別々のレンダリングコンテキストで更新後のグラフィクス情報をレンダリングすることが望ましい場合がある。
図20と21の方法は、ミラーリングされたグラフィクスコンテキストの中での、第一のOSで動作中のアプリケーションのアクティブディスプレイによるグラフィクスコンテキストの異環境間ミラーリングを説明している。しかしながら、この方法は、グラフィクスコンテキストの中でアクティブに表示されているアプリーションがない場合にも使用できる。例えば、グラフィクスコンテキストは、第一のOSのホーム画面またはその他の機能(例えば、検索画面等)を表示していてもよい。このような場合、グラフィクスコンテキストに関するサーフェス情報は第一のOSのコンポーネントによって更新され、図20と21の方法のその他のステップは、第二のアプリケーションディスプレイの中にミラーリングされたグラフィクスコンテキストを提供するために実行されてもよい。
特に、グラフィクスコンテキストの異環境間ミラーリングは、アプリケーションの異環境間レンダリングと同時に利用してもよい。例えば、図20または21による方法は、前述のアプリケーションの異環境間レンダリングの方法を使って、第一のOSで動作中のアプリケーションが第二のユーザ環境内で表示されるのと同時に、モバイルデバイスのユーザ操作空間のアクティブグラフィクスコンテキストを第二のユーザ環境にミラーリングするために使用してもよい。説明のために図8を参照すると、モバイルOS用アプリケーションがディスプレイ844の上のデスクトップOSのユーザ操作空間内の第二のコンソールウィンドウ884に表示されている間に、モバイルOSのユーザ操作空間を第一のコンソールウィンドウ882の中に表示してもよい。
ミラーリングされたグラフィクスコンテキストのためのユーザ操作のサポートは、図13、14、18及び/または19に示される異環境間アプリケーションのためのユーザインタフェースをサポートするのと実質的に同じ方法で行われてもよい。具体的には、入力イベントは、第二のOSのコンソールアプリケーションから仮想入力デバイスに提供されてもよい。第一のOSは、拡張または非拡張入力待ち行列を通じて、仮想入力デバイスからの入力イベントを受け入れてもよい。
異環境間レンダリングの実施形態
上記の方法は、第二のオペレーティングシステムのユーザ操作空間を通じた第一のオペレーティングシステムのアプリケーションとグラフィクスコンテキストのための異環境間ユーザ操作をサポートする。わかりやすい異環境間使用モデルとするために、実施形態は、第二のオペレーティングシステムのユーザ操作空間から、第一のオペレーティングシステムのアプリケーション及び/またはミラーリングされたコンテキストにアクセスできるようにすることに関する。
異環境間レンダリングの実施形態
上記の方法は、第二のオペレーティングシステムのユーザ操作空間を通じた第一のオペレーティングシステムのアプリケーションとグラフィクスコンテキストのための異環境間ユーザ操作をサポートする。わかりやすい異環境間使用モデルとするために、実施形態は、第二のオペレーティングシステムのユーザ操作空間から、第一のオペレーティングシステムのアプリケーション及び/またはミラーリングされたコンテキストにアクセスできるようにすることに関する。
再び図8を参照すると、ユーザは、モバイルデバイス上の操作コンポーネント(すなわち、タッチスクリーンディスプレイ116、その他のI/Oデバイス118)を含む第一のユーザ操作空間を通じて、第一のOS(すなわち、モバイルOSであるAndroid)を操作できる。ユーザはまた、第二のOS(すなわち、デスクトップOSであるHydroid)を、第二の端末環境840のディスプレイ844を含む第二のユーザ操作空間を通じて操作できる。前述のように、デスクトップOS 160で利用可能な(すなわち、そのためにコンパイルされ、その実行環境内にロードされた)アプリケーションの集合は、モバイルOS 130で利用可能なものとは異なるかもしれない。実施形態は、デスクトップOS 160のユーザ操作空間のメニューの中にモバイルOS 130で利用可能なアプリケーションのためのメニューアイコンまたはメニューリストアイテムを設けることによって、モバイルOS 130のアプリケーションにデスクトップOS 160のユーザ操作空間内でアクセスできるようにすることに関する。
図22は、各種の実施形態による異環境間リダイレクションの態様を示す。図22に示されるコンピューティング環境2200の中で、ユーザは、デスクトップOSのユーザ操作空間2202を通じてデスクトップOS 160を操作する。デスクトップOSのユーザ操作空間2202の中で、メニューバー2220には、利用可能なアプリケーションのアイコンまたはリストが含まれる。あるアプリケーションを起動させるには、ユーザはそのアプリケーションの名前またはアイコンをメニューバーから、またはメニューバー2220のドロップダウンまたはポップアップリストから選択する。従来、メニューバー2220には、デスクトップOS 160で利用可能なアプリケーションのメニューアイテムまたはアイコンのみが含まれている。例えば、メニューアイテム2222、2224、2226及び/または2228は、デスクトップOS 160で利用可能な(すなわち、そのためにコンパイルされ、その実行環境の中にロードされた)アプリケーションであってもよい。本発明の実施形態は、デスクトップOSのユーザ操作空間2202からのモバイルOS 130のアプリケーション及び/またはグラフィクスコンテキストへの異環境間アクセスを提供することに関する。例えば、メニューアイテム2232、2234、2236、2237及び/または2238はモバイルOS 130で利用可能なアプリケーション及び/またはモバイルOS 130のグラフィクスコンテキストを示していてもよい。
デスクトップOSのユーザ操作空間2202は、デスクトップOS 160に関連するユーザ操作空間(例えば、第二の端末環境840)の中のディスプレイに表示される。デスクトップOS 160のメニューバー2220には、デスクトップOS 160のためにコンパイルされ、そこにロードされた(例えば、Hydroid/Linuxのためにコンパイルされ、Hydroid OSの実行環境内にロードされた)アプリケーションに関連するメニューアイテム2222、2224、2226及び/または2228が含まれる。メニューバー2220はまた、モバイルOS 130のためにコンパイルされ、そこにロードされた(例えば、Androidのためにコンパイルされ、Androidの実行環境内にロードされた)アプリケーションに関連するメニューアイテム2234、2236、2237及び/または2238が含まれる。ユーザがメニューアイテム2234、2236及び/または2238の1つを選択すると、関連するアプリケーションがモバイルOS 130上で起動され、デスクトップOS 160のコンソールウィンドウ内、例えばデスクトップOSのユーザ操作空間2202のウィンドウ2216の中に表示される。メニューアイテム2232は、モバイルOSグラフィクスコンテキストに関連付けられていてもよく、これによって、メニューアイテム2232が選択されると、モバイルOSのグラフィクスコンテキストがデスクトップOS 160のコンソールウィンドウ内に表示される。
図23は、デスクトップOS 160のメニューバー2220を構築するために使用できるプロセスフロー2300を示す。プロセスフロー2300のステップ2302で、デスクトップOS 160は、モバイルOS 130に利用可能なアプリケーションのリストを問い合わせる。一実施形態において、デスクトップOS 160のシステムサービスまたは起動アプリケーションは、モバイルOS 130のサービスにすべての起動可能なモバイルOS用アプリケーションのショートカットを問い合わせる。モバイルOS 130は、利用可能なアプリケーションのリスト(すなわち、利用可能なモバイルOS用アプリケーションの起動可能なショートカット)を返す。利用可能なアプリケーションのリストには、モバイルOS 130で利用可能なすべてのアプリケーション(モバイルOS 130にロードされ、実行可能なすべてのアプリケーション)または、利用可能なモバイルOS用アプリケーションのサブセットが含まれていてもよい。例えば、リストには、モバイルOS GUIのアプリケーションメニュー画面上に現れるすべてのアプリケーションが含まれていてもよい。ステップ2304で、デスクトップOS 160は、モバイルOS 130からアプリケーションのリストを受け取る。モバイルOS 130から返されたアプリケーションのリストには、リストに挙げられた各アプリケーションのアプリケーションパッケージ名が含まれ、また、リストに挙げられた各アプリケーションのアプリケーション名とアイコンが含まれていてもよい。
デスクトップOS 160は、メニューバー2220の中に、アプリケーションのリストの中の各アプリケーションのメニューアイテムを、ブロック2306、2308、2310を繰り返すことによって作成する。各アプリケーションについて、デスクトップOS 160は、ブロック2306でメニューバー2220の中にアプリケーションのアイコンのインスタンスを作成し、ブロック2308でそのアイコンをデスクトップOS 160のコンソールアプリケーションに関連付け、ブロック2310でそのアプリケーションのパッケージ名を示すパラメータをそのアイコンに関連付ける。コンソールアプリケーションはデスクトップOS 160上で動作し、上述の異環境間レンダリングの実施形態を使って、デスクトップOS 160内にそのアプリケーションに関するグラフィクス情報を表示する。このようにして、ユーザがメニューアイテムを選択すると、コンソールアプリケーションがデスクトップOS 160上で動作し、そのアプリケーションのパッケージ名がコンソールアプリケーションに送られる。
デスクトップOS 160は、多様な方法で、モバイルOS 130のアプリケーションに関連するメニューアイテムを表示してもよい。メニューアイテムは、メニューバー2220または、そのモバイルOS用アプリケーションが利用可能であることを示すメニューアイテムが選択された時に現れるドロップダウンメニューの中に表示されてもよい。メニューアイテムは、メニューバー2220またはドロップダウンメニューの中でアイコンまたはアプリケーション名のみを使って表示されてもよい。1つの実施形態において、デスクトップOS 160は、モバイルOS用アプリケーションごとに別のメニューバーを表示する。他の実施形態では、モバイルOS用アプリケーションに関連するメニューアイテムが、デスクトップOS用アプリケーションのメニューアイテムに沿って、または混ざって、デスクトップOSのメニューバー2220の中に表示される。任意選択的に、モバイルOSのメニューアイテムは、メニューバー2220の中の、デリミタ2240によって仕切られた、またはその他の方法でモバイルOSのメニューアイテムが含まれることを特定できるようにされた領域2230の中に表示されてもよい。メニューバー2220は、モバイルデバイスそのもののアクティブディスプレイ用のメニューアイテム、すなわちユーザが、図20及び/または21の方法に従ってデスクトップOSのユーザ環境内でモバイルOSのユーザ操作空間を表示するために選択できるメニューアイテムを含んでいてもよい。1つの実施形態において、モバイルOSのホーム画面のアプリケーションは、利用可能なアプリケーションのリストの中に返され、関連するメニューアイテムが提供される。
ユーザがモバイルOS用アプリケーションに関連するメニューアイテムを選択すると、デスクトップOS 160がそのニューアイテムに関連するコンソールアプリケーションを起動させ、そのアプリケーションのパッケージ名をコンソールアプリケーションに送る。コンソールアプリケーションは、デスクトップOSのユーザ操作空間2202の中にウィンドウを1つ表示する(すなわち、デスクトップOSのグラフィクスシステムの中のコンソールアプリケーションディスプレイ)。コンソールアプリケーションは、モバイルOS 130に、そのアプリケーションを起動させる要求を送り(すなわち、モバイルOS 130に対して、実行パラメータとしてコンソールアプリケーションに提供されたアプリケーションパッケージ名を起動するように要求し)、コンソールアプリケーションを通じてそのアプリケーションに関するグラフィクスフレームを表示する。アプリケーションは、その時点でモバイルOS 130で動作中であっても、そうでなくてもよい。アプリケーションがモバイルOS 130上で動作中であれば、そのアプリケーションの表示はモバイルOS 130からデスクトップOSのユーザ操作空間2202に移動されても、またはモバイルデバイスのディスプレイとユーザ操作空間2202の両方で同時に表示されてもよい。アプリケーショングラフィクスの表示とユーザ操作のサポートは、上述の異環境間レンダリングと異環境間ユーザインタフェースのサポートの方法の何れを使用したアプリケーションについても実行できる。
図24は、ユーザがデスクトップOSのGUI 880のメニューバー2220でモバイルOS用アプリケーションに関するメニューアイテムを選択したことに応答して、モバイルOS 130がアプリケーションを起動させるために実行するプロセスフロー2400を示す。プロセスフロー2400はブロック2402で、モバイルOS 130がデスクトップOS 160から、モバイルOSのためにコンパイルされ、モバイルOSの実行環境内にロードされたアプリケーションを、デスクトップOSで表示するように起動させる要求を受け取ることから始まる。ブロック2404で、モバイルOSは使用されていない仮想ディスプレイIDを割り当てる。例えば、モバイルOSのグラフィクスシステムは、仮想ディスプレイIDのリストをつけておき、使用されていない仮想ディスプレイIDを第一のアプリケーションのプロセスに割り当ててもよい。ブロック2406で、モバイルOSはモバイルOS内で第一のアプリケーションを起動させる(すなわち、モバイルOS上で動作中となる)。ブロック2408で、モバイルOS 130は、第一のアプリケーションに関するリフレッシュ通知を仮想ディスプレイに関連付ける。例えば、モバイルOSのグラフィクスサーバは、アプリケーションとそれに関連する仮想ディスプレイのリストをつけていてもよい。ブロック2410と2412で、モバイルOSは、第一のアプリケーションに関するアプリケーショングラフィクスをモニタし、第一のアプリケーションに関するアプリケーショングラフィクス情報が更新された時にデスクトップOSのコンソールアプリケーションに通知することによって、第一のアプリケーションに関するグラフィクス情報を維持する。ブロック2410と2412は、図10、12、16及び/または17の方法によって異環境間アプリケーションに関するアプリケーショングラフィクスを維持することに対応していてもよい。
上記の説明は、例示と説明を目的としている。さらに、この説明は本発明の実施形態を本明細書で開示されている形態に限定することを意図していない。多数の例示的な態様と実施形態を上で説明したが、当業者であれば、そのいくつかの変更、改良、置換、追加、サブコンビネーションに気付くであろう。
上述の方法の各種の操作は、それに対応する機能を果たすことのできる、どのような適当な手段で実行してもよい。この手段としては、各種のハードウェア及び/またはソフトウェアコンポーネント及び/またはモジュール等があり、これには回路、特定用途集積回路(ASIC)またはプロセッサが含まれるが、これらに限定されない。
前述の種々の例示的な論理ブロック、モジュール、回路は、本明細書に記載の機能を実行するように設計された、汎用プロセッサ、デジタル信号プロセッサ(DSP)、ASIC、フィールドプログラマブルゲートアレイ信号(FPGA)またはその他のプログラム可能論理デバイス(PLD)、ディスクリートゲート、またはトランジスタロジック、ディスクリートハードウェアコンポーネントまたはこれらのどのような組合せにより実装または実行されてもよい。汎用プロセッサは、マイクロプロセッサであってもよく、あるいは、プロセッサは、任意の市販のプロセッサ、コントローラ、マイクロコントローラまたはステートマシンであってもよい。プロセッサまた、コンピューティングデバイスの組合せ、例えばDSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと併用される1つまたは複数のマイクロプロセッサ、またはその他の同様の構成として実装されてもよい。
本明細書に関連して説明した方法またはアルゴリズムのステップは、ハードウェアで直接でも、プロセッサにより実行されるソフトウェアモジュールでも、またはこれら2つの組合せでも実施してよい。ソフトウェアモジュールは、どのような形態の有形記憶媒体の中に記憶されてもよい。使用できる記憶媒体の例としては、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、フラッシュメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM等がある。記憶媒体はプロセッサに、プロセッサがその記憶媒体から情報を読み出し、そこに情報を書き込むことができるように接続されてもよい。あるいは、記憶媒体はプロセッサに内蔵されてもよい。ソフトウェアモジュールは1つの命令でも、多くの命令でもよく、いくつかの異なるコードセグメント上で、異なるプログラム間で、及び複数の記憶媒体間で分散されていてもよい。
本明細書に記載の方法は、記載された方法を実現するための1つまたは複数の動作を含む。この方法及び/または動作は、他の方法や動作と交換してもよく、特許請求の範囲から逸脱しない。換言すれば、動作の特定の順序が明示されていないかぎり、特定の動作の順序及び/または用途を変更でき、これも本特許請求の範囲から逸脱しない。
説明した機能は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの組合せによって実施してもよい。ソフトウェアで実行される場合、その機能は1つまたは複数の命令として有形のコンピュータ読取可能媒体に記憶されてもよい。記憶媒体は、コンピュータがアクセス可能な任意の利用可能な有形の記憶媒体であってもよい。例えば、これらに限定されないが、このようなコンピュータ読取可能媒体は、RAM、ROM、EEPROM、CD−ROMまたはその他の光ディスク記憶装置、磁気ディスク記憶装置またはその他の磁気記憶デバイス、または、命令またはデータ構造の形態で所望のプログラムコードを担持または記憶するために使用可能であり、コンピュータによりアクセス可能な任意の有形の媒体であってもよい。本明細書において、ディスク(disk,disc)とは、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、Blu−ray(登録商標)ディスクを含み、diskは通常、磁気的にデータを再生するのに対し、discはレーザを使って光学的にデータを再生する。
それゆえ、コンピュータプログラム製品が本明細書に記載された動作を実行してもよい。例えば、このようなコンピュータブログラム製品はコンピュータ読取可能な有形の媒体であってもよく、そこに命令が有形の状態で格納され(及び/または暗号され)、命令は1つまたは複数のプロセッサによって実行可能で、本明細書に記載された動作が行われる。コンピュータプログラム製品には、パッケージング材料が含まれていてもよい。
ソフトウェアまたは命令はさらに、伝送媒体上で伝送されてもよい。例えば、ソフトウェアは、ウェブサイト、サーバまたは、同軸ケーブル、光ファイバケーブル、ツイストペアケーブル、デジタル加入者線(DSL)等の伝送媒体または、赤外線、無線またはマイクロ波等の無線技術を用いて他の遠隔提供源から伝送されてもよい。
さらに、本明細書に記載された方法と方式を実行するためのモジュール及び/またはその他の適当な手段は、場合に応じてユーザ端末及び/または基地局によりダウンロードし、及び/またはその他の方法で取得することが可能である。例えば、このようなデバイスをサーバにつないで、本明細書に記載された方法を実行するための手段を伝送しやすくすることができる。あるいは、本明細書に記載された各種の方法は、記憶手段(例えば、RAM、ROM、CDやフロッピーディスク等の物理的記憶媒体等)を介して提供することができ、それによってユーザ端末及び/または基地局は、記憶手段をデバイスにつなぐか提供した時に、各種の方法を取得できる。さらに、本明細書に記載された方法と方式をデバイスに提供するために、他の適当な技術を利用することができる。
その他の例及び実施例も、本明細書と付属の特許請求の範囲の範囲及び主旨の中に含まれる。例えば、ソフトウェアの性質から、上述の機能は、プロセッサ、ハードウェア、ファームウェア、ハードワイヤリングまたはそれらの組み合わせによって実行されるソフトウェアを使って実施できる。機能を実施する特徴はまた、様々な位置に物理的に配置されていてもよく、例えば、機能の各部分が異なる物理的場所で実行されるように分散される。また、特許請求の範囲を含む本明細書において、「少なくとも」に続いて羅列される項目の中で使用される「または」という用語は、離接的な一覧を示しており、例えば、「少なくともA、BまたはC」とは、AまたはBまたはCまたはABまたはACまたはBCまたはABC(すなわち、AとBとC)を意味する。さらに、「例示的」という用語は、説明された例が他の例より好ましい、またはよりよいこと意味しない。
本明細書で説明した方式について、各種の変更、代替、改良を行うことができ、これも付属の特許請求の範囲により定義される教示内容の方式から逸脱しない。さらに、明細書と特許請求の範囲の範囲は、上述の工程、機械、製品、物体の組成、手段、方法、動作の特定の態様に限定されない。本明細書で説明したものと実質的に同じ機能を果たし、あるいはそれと実質的に同じ結果を達成する、既存の、または今後開発される工程、機械、製品、物体の組成、手段、方法または動作を利用してもよい。従って、付属の特許請求の範囲は、このような工程、機械、製品、物体の組成、手段、方法または動作をその範囲内に包含する。
Claims (18)
- 方法であって、
第一のアプリケーションと第二のアプリケーションに対するアプリケーショングラフィクスの表示を維持することであって、前記第一及び第二のアプリケーションは、両方とも、第一のオペレーティングシステムのためにコンパイルされ、かつ前記第一のオペレーティングシステム内でアクティブに同時動作中である、前記維持することを含み、前記維持することが、
前記第一のオペレーティングシステムを使って、前記第一のアプリケーションのサーフェスの更新を計算するステップと、
前記第一のオペレーティングシステムを使って、前記第一のアプリケーションの更新されたサーフェスをレンダリングし、第一のグラフィクスフレームを第一のメモリ位置に生成するステップと、
前記第一のオペレーティングシステムを使って、前記第二のアプリケーションのサーフェスの更新を計算するステップと、
前記第二のアプリケーションの更新されたサーフェスを第二のメモリ位置に格納するステップであって、前記第二のメモリ位置が、共有カーネル上で同時動作中の前記第一のオペレーティングシステムと第二のオペレーティングシステムとの両方によってアクセス可能な共有メモリ位置である、前記格納するステップと、
前記第二のオペレーティングシステムのコンソールアプリケーションを使って、前記第二のアプリケーションの前記更新されたサーフェスをレンダリングして、第二のグラフィクスフレームを第三のメモリ位置に生成するステップと
を繰り返し実行することによって行われる、方法。 - 請求項1に記載の方法であって、
前記第一のグラフィクスフレームを前記第一のメモリ位置から、前記第一のオペレーティングシステムに関連する第一のコンピューティング環境のディスプレイに表示すること、
前記第二のグラフィクスフレームを前記第三のメモリ位置から、前記第二のオペレーティングシステムに関連する第二のコンピューティング環境のディスプレイに表示すること
をさらに含む、方法。 - 請求項2に記載の方法であって、前記第二のグラフィクスフレームが、前記コンソールアプリケーションを介して、第三のメモリ位置から、前記第二のオペレーティングシステムに関連する第二のコンピューティング環境のディスプレイに表示される、方法。
- 請求項1に記載の方法であって、
前記コンソールアプリケーションにより、前記更新されたサーフェスが前記第二のメモリ位置において利用可能であることを示す描画通知を受けることをさらに含む、方法。 - 請求項4に記載の方法であって、前記描画通知を受け取ることが、前記第二のメモリ位置へのファイル記述子を受け取ることを含む、方法。
- 請求項4に記載の方法であって、前記描画通知が、プロセス間通信チャネルを通じて受け取られる、方法。
- 請求項4に記載の方法であって、
前記ファイル記述子を前記コンソールアプリケーションのプロセス空間にマッピングすることによって、前記第二のメモリ位置への参照を受け取ることをさらに含む、方法。 - 請求項7に記載の方法であって、前記第二のアプリケーションの前記更新されたサーフェスをレンダリングすることが、前記参照を通じて前記第二のメモリ位置を読み出すことを含む、方法。
- 請求項1に記載の方法であって、
前記コンソールアプリケーションにおいてレンダラオブジェクトのインスタンスを作成すること、
前記第一のオペレーティングシステムのグラフィクスサーバに、前記レンダラオブジェクトのリモート処理可能なインタフェースを登録して、前記第一のアプリケーションの前記サーフェスに関する描画通知を受け取ること
をさらに含む、方法。 - 請求項1に記載の方法であって、前記第一のオペレーティングシステムが、モバイルオペレーティングシステムを含み、前記第二のオペレーティングシステムが、デスクトップオペレーティングシステムを含む、方法。
- 請求項1に記載の方法であって、前記第二のアプリケーションが、前記第二のオペレーティングシステムのグラフィクスサーバと非互換的である、方法。
- 請求項1に記載の方法であって、前記第二のアプリケーションが、Android用アプリケーションを含み、前記第二のオペレーティングシステムのグラフィクスサーバが、Xウィンドウのグラフィクスサーバを含む、方法。
- 請求項1に記載の方法であって、前記第二のアプリケーションの前記更新されたサーフェスをレンダリングすることが、層の重なり順によって前記更新されたサーフェスを合成することを含む、方法。
- モバイルコンピューティングデバイスであって、
第一のオペレーティングシステム内でアクティブに同時動作中の第一のアプリケーション及び第二のアプリケーションと、
前記第一のアプリケーションに関連する第一のグラフィクスサーフェスと、
前記グラフィクスサーフェスをレンダリングして、第一のグラフィクスフレームを第一のメモリ位置に生成するように動作可能な第一のオペレーティングシステムのグラフィクスサーバと、
前記第二のアプリケーションに関連する第二のグラフィクスサーフェスであって、前記第二のグラフィクスサーフェスが第二のメモリ位置に格納され、前記第二のメモリ位置が、共有カーネル上で同時動作中の前記第一のオペレーティングシステムと第二のオペレーティングシステムとの両方によってアクセス可能な共有メモリ位置である、前記第二のグラフィクスサーフェスと、
前記第二のオペレーティングシステム内において動作するコンソールアプリケーションであって、前記第二のグラフィクスサーフェスをレンダリングして、第二のグラフィクスフレームを第三のメモリ位置に生成するように動作可能な前記コンソールアプリケーションと
を備える、モバイルコンピューティングデバイス。 - 請求項14に記載のモバイルコンピューティングデバイスであって、
前記コンソールアプリケーションによってインスタンスが作成されるレンダラオブジェクトであって、前記第二のグラフィクスサーフェスをレンダリングして前記第二のグラフィクスフレームを生成するためのリモート処理可能な方法を含む前記レンダラオブジェクトをさらに備える、モバイルコンピューティングデバイス。 - 請求項14に記載のモバイルコンピューティングデバイスであって、前記コンソールアプリケーションが、前記第一のオペレーティングシステムの前記グラフィクスサーバから、前記第二のグラフィクスサーフェスが更新されたことを示す描画通知を受け取る、モバイルコンピューティングデバイス。
- 請求項14に記載のモバイルコンピューティングデバイスであって、前記第二のオペレーティングシステムのグラフィクスサーバが、Xウィンドウ型のグラフィクスサーバであり、前記第二のアプリケーションが、第二のオペレーティングシステムの前記Xウィンドウ型のグラフィクスサーバと非互換的な第一のオペレーティングシステムのグラフィクスライブラリを使用する、モバイルコンピューティングデバイス。
- 物理的プロセッサのための命令を記憶したコンピュータ読取可能な媒体を含むコンピューティングデバイスにおいて、前記命令が、実行された時に、前記プロセッサに対し、
第一のアプリケーションと第二のアプリケーションに対するアプリケーショングラフィクスの表示を維持するステップであって、前記第一及び第二のアプリケーションは、両方とも、第一のオペレーティングシステムのためにコンパイルされ、かつ前記第一のオペレーティングシステム内でアクティブに同時動作中である、前記維持するステップを実行させ、前記維持するステップが、
前記第一のオペレーティングシステムを使って、前記第一のアプリケーションのサーフェスの更新を計算するステップと、
前記第一のオペレーティングシステムを使って、前記第一のアプリケーションの更新されたサーフェスをレンダリングし、第一のグラフィクスフレームを第一のメモリ位置に生成するステップと、
前記第一のオペレーティングシステムを使って、前記第二のアプリケーションのサーフェスの更新を計算するステップと、
前記第二のアプリケーションの更新されたサーフェスを第二のメモリ位置に格納するステップであって、前記第二のメモリ位置が、共有カーネル上で同時動作中の前記第一のオペレーティングシステムと第二のオペレーティングシステムとの両方によってアクセス可能な共有メモリ位置である、前記格納するステップと、
前記第二のオペレーティングシステムのコンソールアプリケーションを使って、前記第二のアプリケーションの前記更新されたサーフェスをレンダリングして、第二のグラフィクスフレームを第三のメモリ位置に生成するステップと
を繰り返し実行することによって行われる、コンピューティングデバイス。
Applications Claiming Priority (15)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US38911710P | 2010-10-01 | 2010-10-01 | |
US61/389,117 | 2010-10-01 | ||
US201161507203P | 2011-07-13 | 2011-07-13 | |
US201161507201P | 2011-07-13 | 2011-07-13 | |
US201161507206P | 2011-07-13 | 2011-07-13 | |
US201161507199P | 2011-07-13 | 2011-07-13 | |
US201161507209P | 2011-07-13 | 2011-07-13 | |
US61/507,203 | 2011-07-13 | ||
US61/507,199 | 2011-07-13 | ||
US61/507,201 | 2011-07-13 | ||
US61/507,206 | 2011-07-13 | ||
US61/507,209 | 2011-07-13 | ||
US13/246,665 | 2011-09-27 | ||
US13/246,665 US9047102B2 (en) | 2010-10-01 | 2011-09-27 | Instant remote rendering |
PCT/US2011/053835 WO2012044738A2 (en) | 2010-10-01 | 2011-09-29 | Instant remote rendering |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013546043A true JP2013546043A (ja) | 2013-12-26 |
Family
ID=45893741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013531827A Withdrawn JP2013546043A (ja) | 2010-10-01 | 2011-09-29 | 即時リモートレンダリング |
Country Status (7)
Country | Link |
---|---|
US (1) | US9047102B2 (ja) |
EP (1) | EP2622463B1 (ja) |
JP (1) | JP2013546043A (ja) |
CN (1) | CN103339600B (ja) |
BR (1) | BR112013007342A2 (ja) |
MX (1) | MX2013003515A (ja) |
WO (1) | WO2012044738A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018084790A (ja) * | 2016-11-17 | 2018-05-31 | 富士ゼロックス株式会社 | 端末装置およびプログラム |
Families Citing this family (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130024812A1 (en) | 2011-07-13 | 2013-01-24 | Z124 | Foreground/background assortment of hidden windows |
US8990712B2 (en) | 2011-08-24 | 2015-03-24 | Z124 | Unified desktop triad control user interface for file manager |
US20130104062A1 (en) | 2011-09-27 | 2013-04-25 | Z124 | Unified desktop input segregation in an application manager |
US9678624B2 (en) | 2011-09-27 | 2017-06-13 | Z124 | Unified desktop triad control user interface for a phone manager |
US8726294B2 (en) | 2010-10-01 | 2014-05-13 | Z124 | Cross-environment communication using application space API |
US9529494B2 (en) | 2011-09-27 | 2016-12-27 | Z124 | Unified desktop triad control user interface for a browser |
US9268518B2 (en) | 2011-09-27 | 2016-02-23 | Z124 | Unified desktop docking rules |
US8819705B2 (en) | 2010-10-01 | 2014-08-26 | Z124 | User interaction support across cross-environment applications |
US9047102B2 (en) | 2010-10-01 | 2015-06-02 | Z124 | Instant remote rendering |
US9715252B2 (en) | 2011-08-24 | 2017-07-25 | Z124 | Unified desktop docking behavior for window stickiness |
US8990713B2 (en) | 2011-09-27 | 2015-03-24 | Z124 | Unified desktop triad control user interface for an application manager |
US20130076592A1 (en) | 2011-09-27 | 2013-03-28 | Paul E. Reeves | Unified desktop docking behavior for visible-to-visible extension |
US20130024778A1 (en) | 2011-07-13 | 2013-01-24 | Z124 | Dynamic cross-environment application configuration/orientation |
US8933949B2 (en) | 2010-10-01 | 2015-01-13 | Z124 | User interaction across cross-environment applications through an extended graphics context |
US9405459B2 (en) | 2011-08-24 | 2016-08-02 | Z124 | Unified desktop laptop dock software operation |
US9098437B2 (en) | 2010-10-01 | 2015-08-04 | Z124 | Cross-environment communication framework |
US8966379B2 (en) | 2010-10-01 | 2015-02-24 | Z124 | Dynamic cross-environment application configuration/orientation in an active user environment |
WO2004060748A1 (en) | 2002-12-27 | 2004-07-22 | Advanced Plastics Technologies Ltd | Apparatus and process for manufacturing and filling flexible pouches |
US20120084701A1 (en) | 2010-10-01 | 2012-04-05 | Imerj LLC | Keyboard maximization |
US11410129B2 (en) * | 2010-05-01 | 2022-08-09 | Monday.com Ltd. | Digital processing systems and methods for two-way syncing with third party applications in collaborative work systems |
WO2021161104A1 (en) | 2020-02-12 | 2021-08-19 | Monday.Com | Enhanced display features in collaborative network systems, methods, and devices |
WO2021144656A1 (en) | 2020-01-15 | 2021-07-22 | Monday.Com | Digital processing systems and methods for graphical dynamic table gauges in collaborative work systems |
CN103282875B (zh) | 2010-10-01 | 2017-04-12 | Flex Electronics ID Co.,Ltd. | 多操作系统 |
US20120084736A1 (en) | 2010-10-01 | 2012-04-05 | Flextronics Id, Llc | Gesture controlled screen repositioning for one or more displays |
US9296299B2 (en) | 2011-11-16 | 2016-03-29 | Autoconnect Holdings Llc | Behavioral tracking and vehicle applications |
US8761831B2 (en) | 2010-10-15 | 2014-06-24 | Z124 | Mirrored remote peripheral interface |
US10983747B2 (en) * | 2011-07-15 | 2021-04-20 | Vmware, Inc. | Remote desktop mirroring |
US20160124698A1 (en) | 2011-08-24 | 2016-05-05 | Z124 | Unified desktop triad control user interface for an application launcher |
US20130104051A1 (en) | 2011-09-27 | 2013-04-25 | Z124 | Unified desktop big brother application pools |
WO2013028202A1 (en) | 2011-08-25 | 2013-02-28 | Intel Corporation | Collaborative graphics rendering using mobile devices to support remote display |
US11416131B2 (en) | 2011-09-27 | 2022-08-16 | Z124 | Unified desktop input segregation in an application manager |
US8842057B2 (en) | 2011-09-27 | 2014-09-23 | Z124 | Detail on triggers: transitional states |
US20160054757A1 (en) | 2012-02-29 | 2016-02-25 | Z124 | Unified desktop docking flow |
US20130080899A1 (en) | 2011-09-27 | 2013-03-28 | Paul E. Reeves | Unified desktop big brother applications |
US9703468B2 (en) | 2011-09-27 | 2017-07-11 | Z124 | Unified desktop independent focus in an application manager |
US9164544B2 (en) | 2011-12-09 | 2015-10-20 | Z124 | Unified desktop: laptop dock, hardware configuration |
US20140354651A1 (en) * | 2012-02-20 | 2014-12-04 | Mitsubishi Electric Corporation | Graphics data processing apparatus and graphics data processing system |
GB2502082B (en) | 2012-05-15 | 2014-04-16 | Displaylink Uk Ltd | A display system |
JP2014085861A (ja) * | 2012-10-24 | 2014-05-12 | Canon Inc | 表示システム、端末装置、表示装置、表示システムの制御方法、端末装置の制御方法、及び、表示装置の制御方法 |
US20140282103A1 (en) * | 2013-03-16 | 2014-09-18 | Jerry Alan Crandall | Data sharing |
US9225799B1 (en) * | 2013-05-21 | 2015-12-29 | Trend Micro Incorporated | Client-side rendering for virtual mobile infrastructure |
CN104375849B (zh) * | 2013-08-15 | 2019-01-11 | 腾讯科技(深圳)有限公司 | 加载内核的方法及装置 |
CN104516703B (zh) * | 2013-09-30 | 2018-02-16 | 中国电信股份有限公司 | 在安卓终端上实现虚拟桌面屏幕分辨率自动适配的方法和系统 |
US9035946B1 (en) | 2014-02-13 | 2015-05-19 | Raycast Systems, Inc. | Computer hardware architecture and data structures for triangle binning to support incoherent ray traversal |
US9619120B1 (en) * | 2014-06-30 | 2017-04-11 | Google Inc. | Picture-in-picture for operating systems |
EP3198406B1 (en) * | 2014-09-26 | 2022-02-23 | Intel Corporation | Facilitation of guest application display from host operating system |
CN105740064B (zh) * | 2014-12-12 | 2019-07-16 | 龙芯中科技术有限公司 | Linux系统中防止服务端重启的方法及装置 |
CN105979371A (zh) * | 2015-07-17 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 获取音视频信息的方法及系统 |
CN105162831B (zh) * | 2015-07-27 | 2018-09-18 | 北京京东尚科信息技术有限公司 | 用于实现远程虚拟桌面的移动端和服务端操作方法及装置 |
CN106406920A (zh) * | 2015-07-29 | 2017-02-15 | 宋青见 | 终端设备及其应用程序的执行方法 |
US10582011B2 (en) * | 2015-08-06 | 2020-03-03 | Samsung Electronics Co., Ltd. | Application cards based on contextual data |
CN109074273B (zh) * | 2016-07-25 | 2022-03-29 | 惠普发展公司,有限责任合伙企业 | 自动虚拟输入设备 |
KR102597036B1 (ko) | 2016-10-11 | 2023-11-02 | 삼성전자주식회사 | 듀얼 디스플레이를 가지는 전자 장치 및 이의 운용 방법 |
US10623460B2 (en) * | 2016-11-18 | 2020-04-14 | Google Llc | Streaming application environment with remote device input synchronization |
US11366586B2 (en) | 2016-11-18 | 2022-06-21 | Google Llc | Streaming application environment with recovery of lost or delayed input events |
CN107943459B (zh) * | 2017-11-20 | 2020-12-18 | 中国运载火箭技术研究院 | 一种通用化航天器综合电子系统 |
CN108427545B (zh) * | 2018-02-01 | 2021-07-09 | 广州视源电子科技股份有限公司 | 截屏数据的处理方法、装置、系统、存储介质及处理器 |
US20190303178A1 (en) * | 2018-03-30 | 2019-10-03 | FullStory, Inc. | Capturing and processing interactions with a user interface of a native application |
CN110389760A (zh) * | 2018-04-19 | 2019-10-29 | 沪江教育科技(上海)股份有限公司 | 动态页面的生成方法、装置、存储介质及电子设备 |
US11436359B2 (en) | 2018-07-04 | 2022-09-06 | Monday.com Ltd. | System and method for managing permissions of users for a single data type column-oriented data structure |
US11698890B2 (en) | 2018-07-04 | 2023-07-11 | Monday.com Ltd. | System and method for generating a column-oriented data structure repository for columns of single data types |
CN109582453A (zh) * | 2018-11-29 | 2019-04-05 | 北京元心科技有限公司 | 多系统间协调调度的方法、装置及电子设备 |
CN110119261B (zh) * | 2019-04-29 | 2022-02-08 | 深圳达闼科技控股有限公司 | 文件共享方法、折叠屏终端、计算设备及计算机存储介质 |
CN110347475B (zh) * | 2019-06-19 | 2022-03-04 | 东软集团股份有限公司 | 服务调用方法、服务调用装置及服务调用系统 |
CN110442389B (zh) * | 2019-08-07 | 2024-01-09 | 北京技德系统技术有限公司 | 一种多桌面环境共享使用gpu的方法 |
EP4062313A1 (en) | 2019-11-18 | 2022-09-28 | Monday.com Ltd. | Collaborative networking systems, methods, and devices |
US20210150481A1 (en) | 2019-11-18 | 2021-05-20 | Monday.Com | Digital processing systems and methods for mechanisms for sharing responsibility in collaborative work systems |
EP4143732A1 (en) | 2020-05-01 | 2023-03-08 | Monday.com Ltd. | Digital processing systems and methods for enhanced collaborative workflow and networking systems, methods, and devices |
US20240184989A1 (en) | 2020-05-01 | 2024-06-06 | Monday.com Ltd. | Digital processing systems and methods for virtualfile-based electronic white board in collaborative work systems systems |
US11070621B1 (en) * | 2020-07-21 | 2021-07-20 | Cisco Technology, Inc. | Reuse of execution environments while guaranteeing isolation in serverless computing |
CN112379955A (zh) * | 2020-11-17 | 2021-02-19 | 北京麟卓信息科技有限公司 | 一种安卓应用在横屏显示器中的显示方法及装置 |
CN112463273B (zh) * | 2020-11-18 | 2022-01-11 | 北京麟卓信息科技有限公司 | 一种安卓应用在pc显示器中的显示方法及装置 |
US11397847B1 (en) | 2021-01-14 | 2022-07-26 | Monday.com Ltd. | Digital processing systems and methods for display pane scroll locking during collaborative document editing in collaborative work systems |
CN113467870B (zh) * | 2021-06-25 | 2023-10-03 | 宁波均联智行科技股份有限公司 | 基于双系统的app同屏显示方法及系统 |
CN115705229A (zh) * | 2021-08-06 | 2023-02-17 | 北京小米移动软件有限公司 | 显示控制方法和系统、移动终端、存储介质 |
US12056664B2 (en) | 2021-08-17 | 2024-08-06 | Monday.com Ltd. | Digital processing systems and methods for external events trigger automatic text-based document alterations in collaborative work systems |
CN115658214B (zh) * | 2022-12-09 | 2023-04-04 | 北京麟卓信息科技有限公司 | 一种跨运行环境的输入渲染延迟优化方法 |
US11741071B1 (en) | 2022-12-28 | 2023-08-29 | Monday.com Ltd. | Digital processing systems and methods for navigating and viewing displayed content |
US11886683B1 (en) | 2022-12-30 | 2024-01-30 | Monday.com Ltd | Digital processing systems and methods for presenting board graphics |
US11893381B1 (en) | 2023-02-21 | 2024-02-06 | Monday.com Ltd | Digital processing systems and methods for reducing file bundle sizes |
CN116339900B (zh) * | 2023-05-30 | 2023-07-18 | 北京麟卓信息科技有限公司 | 一种跨运行环境的多窗口融合显示方法 |
US12056255B1 (en) | 2023-11-28 | 2024-08-06 | Monday.com Ltd. | Digital processing systems and methods for facilitating the development and implementation of applications in conjunction with a serverless environment |
CN117369936B (zh) * | 2023-12-04 | 2024-03-08 | 武汉凌久微电子有限公司 | 一种显示内容渲染方法及渲染系统 |
Family Cites Families (223)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5396630A (en) | 1992-10-06 | 1995-03-07 | International Business Machines Corporation | Method and system for object management across process boundries in a data processing system |
US5673403A (en) | 1992-11-13 | 1997-09-30 | International Business Machines Corporation | Method and system for displaying applications of different operating systems on a single system using the user interface of the different operating systems |
JPH06301555A (ja) | 1993-02-26 | 1994-10-28 | Internatl Business Mach Corp <Ibm> | マイクロカーネル上の複数の共存オペレーティング・システム・パーソナリティ用のシステム |
US5956030A (en) | 1993-06-11 | 1999-09-21 | Apple Computer, Inc. | Computer system with graphical user interface including windows having an identifier within a control region on the display |
JP3437238B2 (ja) | 1994-02-04 | 2003-08-18 | キヤノン株式会社 | コンピュータ、コンピュータシステム及びその制御方法 |
JPH08115144A (ja) | 1994-10-17 | 1996-05-07 | Toshiba Corp | 分離型ワークステーション装置 |
US6108715A (en) | 1994-12-13 | 2000-08-22 | Microsoft Corporation | Method and system for invoking remote procedure calls |
CA2173695A1 (en) | 1995-04-14 | 1996-10-15 | Panagiotis Kougiouris | Method and system for providing interoperability among processes written to execute on different operating systems |
US6260075B1 (en) | 1995-06-19 | 2001-07-10 | International Business Machines Corporation | System and method for providing shared global offset table for common shared library in a computer system |
JPH0926769A (ja) | 1995-07-10 | 1997-01-28 | Hitachi Ltd | 画像表示装置 |
US6477585B1 (en) | 1995-08-18 | 2002-11-05 | International Business Machines Corporation | Filter mechanism for an event management service |
US5874928A (en) | 1995-08-24 | 1999-02-23 | Philips Electronics North America Corporation | Method and apparatus for driving a plurality of displays simultaneously |
US6018340A (en) | 1997-01-27 | 2000-01-25 | Microsoft Corporation | Robust display management in a multiple monitor environment |
US6157959A (en) | 1997-07-03 | 2000-12-05 | Tandem Computers, Incorporated | Method and apparatus for providing portable kernel-mode support for fast interprocess communication |
US6381682B2 (en) | 1998-06-10 | 2002-04-30 | Compaq Information Technologies Group, L.P. | Method and apparatus for dynamically sharing memory in a multiprocessor system |
US6178503B1 (en) | 1998-09-11 | 2001-01-23 | Powerquest Corporation | Managing multiple operating systems on a single computer |
US6507336B1 (en) | 1999-02-04 | 2003-01-14 | Palm, Inc. | Keyboard for a handheld computer |
US7334235B2 (en) | 1999-06-16 | 2008-02-19 | Microsoft Corporation | Operating system application programming interfaces and methods of using operating systems |
US7284203B1 (en) | 1999-07-27 | 2007-10-16 | Verizon Laboratories Inc. | Method and apparatus for application sharing interface |
US7007240B1 (en) | 1999-08-03 | 2006-02-28 | Gateway Inc. | Method and system for displaying non-overlapping program and auxiliary windows |
JP4395223B2 (ja) | 1999-09-24 | 2010-01-06 | 株式会社日立製作所 | 表示装置、表示方法、および、ナビゲーション装置 |
US6917963B1 (en) | 1999-10-05 | 2005-07-12 | Veritas Operating Corporation | Snapshot image for the application state of unshareable and shareable data |
US20080062625A1 (en) | 1999-10-18 | 2008-03-13 | Jeffrey Batio | Portable computer for dual, rotatable screens |
KR100679809B1 (ko) | 1999-12-28 | 2007-02-07 | 주식회사 케이티 | 분산객체간 통신장치 및 방법 |
JP2001209466A (ja) | 2000-01-26 | 2001-08-03 | Internatl Business Mach Corp <Ibm> | コンピュータの制御方法、コンピュータ、及び記録媒体 |
US20100005396A1 (en) | 2000-02-18 | 2010-01-07 | Nason D David | Method and system for controlling a comlementary user interface on a display surface |
JP4402797B2 (ja) | 2000-03-02 | 2010-01-20 | 株式会社日立製作所 | 情報処理装置 |
WO2001080215A1 (en) | 2000-04-19 | 2001-10-25 | Broadcom Corporation | Apparatus and method for persistent display interface |
US20020158811A1 (en) | 2000-06-02 | 2002-10-31 | Davis Terry Glenn | Dual-monitor duo-workpad TM device |
US7210099B2 (en) | 2000-06-12 | 2007-04-24 | Softview Llc | Resolution independent vector display of internet content |
JP5081345B2 (ja) | 2000-06-13 | 2012-11-28 | 富士フイルム株式会社 | 光電変換素子の製造方法 |
US6728722B1 (en) | 2000-08-28 | 2004-04-27 | Sun Microsystems, Inc. | General data structure for describing logical data spaces |
US20030020954A1 (en) | 2001-07-26 | 2003-01-30 | Charlie Udom | Versatile printing from portable electronic device |
GB0028890D0 (en) | 2000-11-27 | 2001-01-10 | Isis Innovation | Visual display screen arrangement |
US20030017417A1 (en) | 2001-07-23 | 2003-01-23 | Goodin Jonathan William | Method for obtaining a lithographic printing surface using a metal complex |
US6608629B2 (en) | 2001-03-16 | 2003-08-19 | Mitsubishi Electric Research Laboratories, Inc. | Distance based constraints for adaptively sampled distance fields |
TW502210B (en) | 2001-04-19 | 2002-09-11 | Asustek Comp Inc | Computer system capable of switching operating system |
US6961941B1 (en) | 2001-06-08 | 2005-11-01 | Vmware, Inc. | Computer configuration for resource management in systems including a virtual machine |
US7173627B2 (en) * | 2001-06-29 | 2007-02-06 | Intel Corporation | Apparatus, method and system with a graphics-rendering engine having a graphics context manager |
US20130024778A1 (en) | 2011-07-13 | 2013-01-24 | Z124 | Dynamic cross-environment application configuration/orientation |
US8966379B2 (en) | 2010-10-01 | 2015-02-24 | Z124 | Dynamic cross-environment application configuration/orientation in an active user environment |
US8726294B2 (en) | 2010-10-01 | 2014-05-13 | Z124 | Cross-environment communication using application space API |
US8819705B2 (en) | 2010-10-01 | 2014-08-26 | Z124 | User interaction support across cross-environment applications |
US9047102B2 (en) | 2010-10-01 | 2015-06-02 | Z124 | Instant remote rendering |
US9098437B2 (en) | 2010-10-01 | 2015-08-04 | Z124 | Cross-environment communication framework |
US8933949B2 (en) | 2010-10-01 | 2015-01-13 | Z124 | User interaction across cross-environment applications through an extended graphics context |
US6970173B2 (en) | 2001-09-14 | 2005-11-29 | Ati Technologies, Inc. | System for providing multiple display support and method thereof |
JP4681225B2 (ja) | 2001-10-17 | 2011-05-11 | ベプテック インコーポレイテッド | オペレーティングシステムにわたる通信の方法 |
US20030079205A1 (en) | 2001-10-22 | 2003-04-24 | Takeshi Miyao | System and method for managing operating systems |
JP2003196096A (ja) | 2001-12-07 | 2003-07-11 | Internatl Business Mach Corp <Ibm> | コンピュータシステム、その起動制御方法及びプログラム |
US20030115443A1 (en) | 2001-12-18 | 2003-06-19 | Cepulis Darren J. | Multi-O/S system and pre-O/S boot technique for partitioning resources and loading multiple operating systems thereon |
US7143417B2 (en) | 2002-01-10 | 2006-11-28 | International Business Machines Corporation | Notification services within a unified communications service |
US20030226116A1 (en) | 2002-03-08 | 2003-12-04 | Katie Kuwata | Method and system for implementing a historical buffer |
WO2003077097A1 (fr) | 2002-03-08 | 2003-09-18 | Mitsubishi Denki Kabushiki Kaisha | Dispositif de communication mobile, procede de commande d'affichage pour ledit dispositif et programme correspondant |
US20030179541A1 (en) | 2002-03-21 | 2003-09-25 | Peter Sullivan | Double screen portable computer |
GB2394799B (en) | 2002-07-31 | 2006-01-25 | Hewlett Packard Co | Improvements relating to mobile printing |
US20070022155A1 (en) | 2002-08-22 | 2007-01-25 | Owens David H | Method and system for integrating enterprise software applications with desktop software applications |
EP1540840A4 (en) | 2002-09-17 | 2008-04-16 | Si Han Kim | MULTI-DISPLAY DEVICE |
US7176943B2 (en) | 2002-10-08 | 2007-02-13 | Microsoft Corporation | Intelligent windows bumping method and system |
US8508643B2 (en) | 2003-01-17 | 2013-08-13 | Hewlett-Packard Development Company, L.P. | Method and system for processing an image |
US20120084701A1 (en) | 2010-10-01 | 2012-04-05 | Imerj LLC | Keyboard maximization |
US7389512B2 (en) | 2003-05-09 | 2008-06-17 | Sun Microsystems, Inc. | Interprocess communication within operating system partitions |
EP1503286B1 (en) | 2003-07-30 | 2014-09-03 | Jaluna SA | Multiple operating system networking |
US7152186B2 (en) | 2003-08-04 | 2006-12-19 | Arm Limited | Cross-triggering of processing devices |
JP4149483B2 (ja) | 2003-08-21 | 2008-09-10 | アルプス電気株式会社 | 電子機器 |
US7181251B2 (en) | 2003-10-22 | 2007-02-20 | Nokia Corporation | Mobile communication terminal with multi orientation user interface |
TW200525421A (en) | 2004-01-30 | 2005-08-01 | Intervideo Digital Technology Corp | Structure of shared application program in operating system and method thereof |
US7483991B2 (en) | 2004-03-25 | 2009-01-27 | Microsoft Corporation | Instant messaging communications channel for transporting data between objects executing within a managed code environment |
JP2005305867A (ja) | 2004-04-22 | 2005-11-04 | Seiko Epson Corp | 画像処理システム、画像表示装置、プリンタおよび印刷方法 |
US7478204B2 (en) | 2004-04-29 | 2009-01-13 | International Business Machines Corporation | Efficient sharing of memory between applications running under different operating systems on a shared hardware system |
US20060031572A1 (en) | 2004-05-18 | 2006-02-09 | Microsoft Corporation | Event broker |
JP2005346244A (ja) | 2004-06-01 | 2005-12-15 | Nec Corp | 情報表示装置及びその操作方法 |
US20070182663A1 (en) | 2004-06-01 | 2007-08-09 | Biech Grant S | Portable, folding and separable multi-display computing system |
KR100578592B1 (ko) | 2004-06-23 | 2006-05-12 | 공정배 | 서버/클라이언트 기반에서 온라인 이기종 운영 체제 제공 시스템 및 방법 |
US7996785B2 (en) | 2004-06-30 | 2011-08-09 | Microsoft Corporation | Systems and methods for integrating application windows in a virtual machine environment |
US7424601B2 (en) | 2004-07-07 | 2008-09-09 | Yongyong Xu | Methods and systems for running multiple operating systems in a single mobile device |
EP1807747A1 (en) | 2004-09-21 | 2007-07-18 | Nokia Corporation | Foldable electronic device |
US20060082581A1 (en) | 2004-10-14 | 2006-04-20 | Microsoft Corporation | Encoding for remoting graphics to decoder device |
EP1811750A4 (en) | 2004-11-09 | 2009-07-08 | Sharp Kk | PORTABLE INFORMATION TERMINAL |
US7290114B2 (en) | 2004-11-17 | 2007-10-30 | Intel Corporation | Sharing data in a user virtual address range with a kernel virtual address range |
US20060111921A1 (en) | 2004-11-23 | 2006-05-25 | Hung-Yang Chang | Method and apparatus of on demand business activity management using business performance management loops |
EP1662760A1 (en) | 2004-11-30 | 2006-05-31 | Sony Ericsson Mobile Communications AB | Method for providing alerts in a mobile device and mobile device therefor |
JP4738805B2 (ja) | 2004-12-16 | 2011-08-03 | 株式会社リコー | 画面共有システム、画面共有方法、画面共有プログラム |
US20060139862A1 (en) | 2004-12-23 | 2006-06-29 | Yajun Wang | Hinged electronic device with hinged screen |
KR100616157B1 (ko) | 2005-01-11 | 2006-08-28 | 와이더댄 주식회사 | 애플리케이션 연동 방법 및 그 시스템 |
TWI267752B (en) | 2005-01-17 | 2006-12-01 | Lite On Technology Corp | Multi-mode computer system and operating method thereof |
US20060183505A1 (en) | 2005-02-15 | 2006-08-17 | Willrich Scott Consulting Group, Inc. | Digital mobile planner |
US7289084B2 (en) | 2005-02-22 | 2007-10-30 | John Michael Lesniak | Computer display apparatus |
GB0504326D0 (en) | 2005-03-02 | 2005-04-06 | Symbian Software Ltd | Dual mode operating system for a computing device |
US20060248471A1 (en) | 2005-04-29 | 2006-11-02 | Microsoft Corporation | System and method for providing a window management mode |
US7565535B2 (en) | 2005-05-06 | 2009-07-21 | Microsoft Corporation | Systems and methods for demonstrating authenticity of a virtual machine using a security image |
WO2007005562A2 (en) | 2005-06-30 | 2007-01-11 | Phoenix Technologies Ltd. | Shared file system management between independent operating systems |
US7950008B2 (en) | 2005-07-06 | 2011-05-24 | International Business Machines Corporation | Software installation in multiple operating systems |
US7870558B2 (en) | 2005-07-15 | 2011-01-11 | Microsoft Corporation | Handle passing using an inter-process communication |
US20070067769A1 (en) | 2005-08-30 | 2007-03-22 | Geisinger Nile J | Method and apparatus for providing cross-platform hardware support for computer platforms |
US20070050751A1 (en) | 2005-08-31 | 2007-03-01 | Microsoft Corporation | Automatic interoperation with legacy POS service and control objects |
US7844301B2 (en) | 2005-10-14 | 2010-11-30 | Lg Electronics Inc. | Method for displaying multimedia contents and mobile communications terminal capable of implementing the same |
US20070136356A1 (en) | 2005-12-12 | 2007-06-14 | Microsoft Corporation | Mechanism for drivers to create alternate namespaces |
WO2007074697A1 (ja) | 2005-12-26 | 2007-07-05 | Ibm Japan, Ltd. | 複数の表示オブジェクトの表示を操作するための方法、プログラム、データ処理システム |
KR20070082691A (ko) | 2006-02-17 | 2007-08-22 | 삼성전자주식회사 | 디지털 멀티미디어 장치 |
FR2899755B1 (fr) | 2006-04-10 | 2008-10-10 | Streamezzo Sa | Procede de restitution adaptative d'au moins un contenu multimedia sur un dispositif de visualisation orientable d'un terminal |
US20090278806A1 (en) | 2008-05-06 | 2009-11-12 | Matias Gonzalo Duarte | Extended touch-sensitive control area for electronic device |
US7987432B1 (en) | 2006-04-25 | 2011-07-26 | Parallels Holdings, Ltd. | Seamless integration and installation of non-native application into native operating system |
US20080282181A1 (en) | 2006-05-02 | 2008-11-13 | Siemens Medical Solutions Usa, Inc. | Executable Application Configuration Information Processing System |
KR100772875B1 (ko) | 2006-05-22 | 2007-11-02 | 삼성전자주식회사 | 사용자 선호도에 따른 사용자 인터페이스를 설정하는 장치및 그 방법 |
US9201703B2 (en) | 2006-06-07 | 2015-12-01 | International Business Machines Corporation | Sharing kernel services among kernels |
US7880728B2 (en) | 2006-06-29 | 2011-02-01 | Microsoft Corporation | Application switching via a touch screen interface |
US20080024388A1 (en) | 2006-07-29 | 2008-01-31 | Oscar Bruce | Two-sided display monitor apparatus |
US9019300B2 (en) | 2006-08-04 | 2015-04-28 | Apple Inc. | Framework for graphics animation and compositing operations |
KR100811794B1 (ko) | 2006-10-12 | 2008-03-10 | 삼성전자주식회사 | 휴대단말기의 블루투스 기능을 이용하여 프린터를 제어하는방법 |
JP4933304B2 (ja) | 2006-10-16 | 2012-05-16 | キヤノン株式会社 | 画像処理装置、その制御方法及びプログラム |
WO2008050175A1 (en) | 2006-10-27 | 2008-05-02 | Nokia Corporation | Method and apparatus for facilitating movement within a three dimensional graphical user interface |
KR101144423B1 (ko) | 2006-11-16 | 2012-05-10 | 엘지전자 주식회사 | 휴대 단말기 및 휴대 단말기의 화면 표시 방법 |
US20080119731A1 (en) | 2006-11-20 | 2008-05-22 | North American Medical Corporation | Portable ultrasound with touch screen interface |
US8332866B2 (en) | 2006-11-29 | 2012-12-11 | Qualcomm Incorporated | Methods, systems, and apparatus for object invocation across protection domain boundaries |
US8839105B2 (en) | 2006-12-01 | 2014-09-16 | International Business Machines Corporation | Multi-display system and method supporting differing accesibility feature selection |
US20080155103A1 (en) | 2006-12-21 | 2008-06-26 | Kimberly Tekavec Bailey | AF UNIX Socket Across Systems in the Same Computer on Computer Systems that Support Multiple Operating System Images |
JP5246388B2 (ja) | 2007-03-08 | 2013-07-24 | 日本電気株式会社 | 仮想装置構成システム、及びその方法 |
EP2137629A4 (en) | 2007-03-20 | 2010-12-29 | Sanggyu Lee | MOBILE VIRTUAL MACHINE IMAGE |
US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
US9104494B2 (en) | 2007-04-13 | 2015-08-11 | Nec Corporation | Virtual computer system and its optimization method |
WO2008132760A2 (en) * | 2007-04-26 | 2008-11-06 | Hewlett-Packard Development Company, L.P. | Method and system for allocating memory in a computing environment |
US8285259B2 (en) | 2007-05-29 | 2012-10-09 | Microsoft Corporation | Resource aggregation in an opportunistic network |
US8004493B2 (en) | 2007-06-08 | 2011-08-23 | Apple Inc. | Methods and systems for providing sensory information to devices and peripherals |
KR101320504B1 (ko) | 2007-07-10 | 2013-10-22 | 엘지전자 주식회사 | 휴대 단말기 |
US8458612B2 (en) | 2007-07-29 | 2013-06-04 | Hewlett-Packard Development Company, L.P. | Application management framework for web applications |
CA2699565C (en) * | 2007-09-20 | 2014-07-15 | C&S Operations, Inc. | Computer system with multiple terminals |
US9003173B2 (en) | 2007-09-28 | 2015-04-07 | Microsoft Technology Licensing, Llc | Multi-OS (operating system) boot via mobile device |
GB2454033A (en) | 2007-10-24 | 2009-04-29 | Plastic Logic Ltd | Portable paperless electronic printer |
US20090158299A1 (en) * | 2007-10-31 | 2009-06-18 | Carter Ernst B | System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed |
KR100883208B1 (ko) | 2007-12-13 | 2009-02-13 | 성균관대학교산학협력단 | 가상화 기술을 기반으로 하여 소프트웨어의 업데이트가가능한 이동통신 단말기 및 그 업데이트 방법 |
TWI358028B (en) | 2007-12-25 | 2012-02-11 | Htc Corp | Electronic device capable of transferring object b |
US20090176571A1 (en) | 2008-01-07 | 2009-07-09 | Ippasa, Llc | System for and method of operating video game system with control actuator-equipped stylus |
US7960945B1 (en) | 2008-01-30 | 2011-06-14 | Google Inc. | Estimating remaining use time of a mobile device |
US9154606B2 (en) | 2008-01-30 | 2015-10-06 | Google Inc. | Notification of mobile device events |
CN101520745B (zh) | 2008-02-27 | 2012-03-28 | 联想(北京)有限公司 | 数据处理设备及其状态切换方法 |
CN101526836A (zh) | 2008-03-03 | 2009-09-09 | 鸿富锦精密工业(深圳)有限公司 | 双屏笔记本电脑 |
US20100164836A1 (en) | 2008-03-11 | 2010-07-01 | Truview Digital, Inc. | Digital photo album, digital book, digital reader |
US7930328B2 (en) | 2008-03-31 | 2011-04-19 | Lenovo (Singapore) Pte. Ltd. | Apparatus, system, and method for file system sharing |
EP2109080A1 (en) | 2008-04-09 | 2009-10-14 | IBBT vzw | A method and device for processing and presenting medical images |
US9286027B2 (en) | 2008-04-11 | 2016-03-15 | T-Mobile Usa, Inc. | Digital picture frame having communication capabilities |
US7949633B1 (en) | 2008-05-12 | 2011-05-24 | Adobe Systems Incorporated | Shared edit access of electronic content |
EP2129085B1 (en) | 2008-05-29 | 2011-03-30 | LG Electronics Inc. | Transparent display and operation method thereof |
US8230180B2 (en) | 2008-06-11 | 2012-07-24 | Samsung Electronics Co., Ltd. | Shared memory burst communications |
WO2009152335A1 (en) | 2008-06-12 | 2009-12-17 | Estari Inc. | Dual screen display system |
US8359372B2 (en) | 2008-06-29 | 2013-01-22 | Microsoft Corporation | Automatic transfer of information through physical docking of devices |
CN102077160B (zh) | 2008-06-30 | 2014-06-18 | 日本电气株式会社 | 信息处理设备、显示控制方法 |
US20090322690A1 (en) | 2008-06-30 | 2009-12-31 | Nokia Corporation | Screen display |
US20100007603A1 (en) | 2008-07-14 | 2010-01-14 | Sony Ericsson Mobile Communications Ab | Method and apparatus for controlling display orientation |
US8451243B2 (en) | 2008-07-25 | 2013-05-28 | Nec Corporation | Information processing device, information processing program, and display control method |
US8191004B2 (en) | 2008-08-06 | 2012-05-29 | Microsoft Corporation | User feedback correlated to specific user interface or application features |
US20100046026A1 (en) | 2008-08-21 | 2010-02-25 | Samsung Electronics Co., Ltd. | Image forming apparatus and image forming method |
US8613394B2 (en) | 2008-08-29 | 2013-12-24 | The Invention Science Fund I, Llc | Bendable electronic interface external control system and method |
US8165558B2 (en) | 2008-09-08 | 2012-04-24 | Celio Technology Corporation | Client device for cellular telephone as server |
US8836611B2 (en) | 2008-09-08 | 2014-09-16 | Qualcomm Incorporated | Multi-panel device with configurable interface |
US9009984B2 (en) | 2008-09-08 | 2015-04-21 | Qualcomm Incorporated | Multi-panel electronic device |
US8803816B2 (en) | 2008-09-08 | 2014-08-12 | Qualcomm Incorporated | Multi-fold mobile device with configurable interface |
US8866840B2 (en) | 2008-09-08 | 2014-10-21 | Qualcomm Incorporated | Sending a parameter based on screen size or screen resolution of a multi-panel electronic device to a server |
US8933874B2 (en) | 2008-09-08 | 2015-01-13 | Patrik N. Lundqvist | Multi-panel electronic device |
US8860632B2 (en) | 2008-09-08 | 2014-10-14 | Qualcomm Incorporated | Multi-panel device with configurable interface |
US20100060549A1 (en) | 2008-09-11 | 2010-03-11 | Ely Tsern | Method and system for dynamically generating different user environments with secondary devices with displays of various form factors |
CN102203850A (zh) | 2008-09-12 | 2011-09-28 | 格斯图尔泰克公司 | 相对于用户而定向所显示的元素 |
KR101501167B1 (ko) | 2008-10-20 | 2015-03-10 | 삼성전자주식회사 | 다중 모뎀을 구비한 이동통신 단말기에서 다중 운용 체제를운용하기 위한 장치 및 방법 |
JP4935796B2 (ja) | 2008-10-30 | 2012-05-23 | 富士ゼロックス株式会社 | 表示制御装置、画像形成装置及びプログラム |
US8352967B2 (en) | 2008-11-10 | 2013-01-08 | Google Inc. | Safe browser plugins using native code modules |
US9075457B2 (en) | 2008-12-12 | 2015-07-07 | Maxim Integrated Products, Inc. | System and method for interfacing applications processor to touchscreen display for reduced data transfer |
US7864524B2 (en) | 2008-12-24 | 2011-01-04 | Research In Motion Limited | Multiple-fold portable electronic device |
US8300022B2 (en) | 2009-01-09 | 2012-10-30 | International Business Machines Corporation | Dynamically reconfigurable touch screen displays |
KR101569776B1 (ko) | 2009-01-09 | 2015-11-19 | 삼성전자주식회사 | 접히는 표시부를 가지는 휴대 단말기 및 이의 운용 방법 |
KR20100083640A (ko) | 2009-01-14 | 2010-07-22 | 삼성전자주식회사 | 디스플레이 장치, 스캐너, 디스플레이 시스템 및 이를 이용한 디스플레이 방법 |
KR101608748B1 (ko) | 2009-02-18 | 2016-04-21 | 삼성전자주식회사 | 탈부착 가능한 서브 디스플레이부를 구비하는 휴대 단말기 |
US20100211769A1 (en) | 2009-02-19 | 2010-08-19 | Subramonian Shankar | Concurrent Execution of a Smartphone Operating System and a Desktop Operating System |
EP2226991B1 (en) | 2009-03-03 | 2014-04-30 | Lg Electronics Inc. | Foldable mobile terminal |
US8446377B2 (en) | 2009-03-24 | 2013-05-21 | Microsoft Corporation | Dual screen portable touch sensitive computing system |
US20100251233A1 (en) | 2009-03-25 | 2010-09-30 | Honeywell International Inc. | Embedded computing system user interface emulated on a separate computing device |
US8194001B2 (en) | 2009-03-27 | 2012-06-05 | Microsoft Corporation | Mobile computer device display postures |
US8630088B2 (en) | 2009-03-27 | 2014-01-14 | Qualcomm Incorporated | Portable docking station for a portable computing device |
US8707061B2 (en) | 2009-03-27 | 2014-04-22 | Qualcomm Incorporated | System and method of providing scalable computing between a portable computing device and a portable computing device docking station |
US7864517B2 (en) | 2009-03-30 | 2011-01-04 | Microsoft Corporation | Mobile computer device binding feedback |
EP2416232B1 (en) | 2009-03-31 | 2019-05-08 | Nec Corporation | Mobile terminal device, control program and multiple display screen control method |
TWI400652B (zh) | 2009-06-11 | 2013-07-01 | Insyde Software Corp | Dual operating system parallel processing methods, recording media and computer program products |
US20100321275A1 (en) | 2009-06-18 | 2010-12-23 | Microsoft Corporation | Multiple display computing device with position-based operating modes |
US8839422B2 (en) | 2009-06-30 | 2014-09-16 | George Mason Research Foundation, Inc. | Virtual browsing environment |
US9348633B2 (en) | 2009-07-20 | 2016-05-24 | Google Technology Holdings LLC | Multi-environment operating system |
US9367331B2 (en) * | 2009-07-20 | 2016-06-14 | Google Technology Holdings LLC | Multi-environment operating system |
US9389877B2 (en) | 2009-07-20 | 2016-07-12 | Google Technology Holdings LLC | Multi-environment operating system |
US9372711B2 (en) | 2009-07-20 | 2016-06-21 | Google Technology Holdings LLC | System and method for initiating a multi-environment operating system |
US8868899B2 (en) | 2009-07-20 | 2014-10-21 | Motorola Mobility Llc | System and method for switching between environments in a multi-environment operating system |
US8847984B2 (en) | 2009-07-27 | 2014-09-30 | Disney Enterprises, Inc. | System and method for forming a composite image in a portable computing device having a dual screen display |
JP2011028673A (ja) | 2009-07-29 | 2011-02-10 | Kyocera Corp | 携帯端末装置 |
US20110102314A1 (en) | 2009-10-30 | 2011-05-05 | Xerox Corporation | Dual-screen electronic reader with tilt detection for page navigation |
US20110113329A1 (en) | 2009-11-09 | 2011-05-12 | Michael Pusateri | Multi-touch sensing device for use with radiological workstations and associated methods of use |
US8797268B2 (en) | 2009-11-18 | 2014-08-05 | Qualcomm Incorporated | Folding mobile device |
KR20110092802A (ko) | 2010-02-10 | 2011-08-18 | 삼성전자주식회사 | 복수개의 표시부를 가지는 단말기의 데이터 운용 방법 및 이를 지원하는 단말기 |
US9454304B2 (en) | 2010-02-25 | 2016-09-27 | Microsoft Technology Licensing, Llc | Multi-screen dual tap gesture |
US20110210922A1 (en) | 2010-02-26 | 2011-09-01 | Research In Motion Limited | Dual-screen mobile device |
JP5800501B2 (ja) | 2010-03-12 | 2015-10-28 | 任天堂株式会社 | 表示制御プログラム、表示制御装置、表示制御システム、及び、表示制御方法 |
US20110239142A1 (en) | 2010-03-25 | 2011-09-29 | Nokia Corporation | Method and apparatus for providing content over multiple displays |
WO2011123840A2 (en) | 2010-04-01 | 2011-10-06 | Citrix Systems, Inc. | Interacting with remote applications displayed within a virtual desktop of a tablet computing device |
US9213480B2 (en) | 2010-04-08 | 2015-12-15 | Nokia Technologies Oy | Method, apparatus and computer program product for joining the displays of multiple devices |
JP4865053B2 (ja) | 2010-04-22 | 2012-02-01 | 株式会社東芝 | 情報処理装置およびドラッグ制御方法 |
US8400564B2 (en) | 2010-05-03 | 2013-03-19 | Microsoft Corporation | Image capture |
US9851747B2 (en) | 2010-05-21 | 2017-12-26 | Peter G. Winsky | Electronic book reader with closely juxtaposed display screens |
US20110291964A1 (en) | 2010-06-01 | 2011-12-01 | Kno, Inc. | Apparatus and Method for Gesture Control of a Dual Panel Electronic Device |
US8954099B2 (en) | 2010-06-16 | 2015-02-10 | Qualcomm Incorporated | Layout design of proximity sensors to enable shortcuts |
US8589952B2 (en) * | 2010-06-30 | 2013-11-19 | Palm, Inc. | Dual operating system operation and configuration |
US20120005602A1 (en) | 2010-07-02 | 2012-01-05 | Nokia Corporation | Methods and apparatuses for facilitating task switching |
US8397245B2 (en) | 2010-07-12 | 2013-03-12 | International Business Machines Corporation | Managing loading and unloading of shared kernel extensions in isolated virtual space |
KR101688942B1 (ko) | 2010-09-03 | 2016-12-22 | 엘지전자 주식회사 | 다중 디스플레이에 기반한 사용자 인터페이스 제공 방법 및 이를 이용하는 이동 단말기 |
WO2012033492A1 (en) | 2010-09-09 | 2012-03-15 | Sony Ericsson Mobile Communications Ab | Annotating e-books/e-magazines with application results |
US20120066624A1 (en) | 2010-09-13 | 2012-03-15 | Ati Technologies Ulc | Method and apparatus for controlling movement of graphical user interface objects |
US8724696B2 (en) | 2010-09-23 | 2014-05-13 | Vmware, Inc. | System and method for transmitting video and user interface elements |
US9430122B2 (en) | 2010-10-01 | 2016-08-30 | Z124 | Secondary single screen mode activation through off-screen gesture area activation |
US9296299B2 (en) | 2011-11-16 | 2016-03-29 | Autoconnect Holdings Llc | Behavioral tracking and vehicle applications |
US20120084736A1 (en) | 2010-10-01 | 2012-04-05 | Flextronics Id, Llc | Gesture controlled screen repositioning for one or more displays |
US20130312106A1 (en) | 2010-10-01 | 2013-11-21 | Z124 | Selective Remote Wipe |
CN103282875B (zh) | 2010-10-01 | 2017-04-12 | Flex Electronics ID Co.,Ltd. | 多操作系统 |
US8761831B2 (en) | 2010-10-15 | 2014-06-24 | Z124 | Mirrored remote peripheral interface |
US8369893B2 (en) | 2010-12-31 | 2013-02-05 | Motorola Mobility Llc | Method and system for adapting mobile device to accommodate external display |
US20120176413A1 (en) | 2011-01-11 | 2012-07-12 | Qualcomm Incorporated | Methods and apparatuses for mobile device display mode selection based on motion direction |
US9354900B2 (en) | 2011-04-28 | 2016-05-31 | Google Technology Holdings LLC | Method and apparatus for presenting a window in a system having two operating system environments |
US20120278747A1 (en) | 2011-04-28 | 2012-11-01 | Motorola Mobility, Inc. | Method and apparatus for user interface in a system having two operating system environments |
US8842057B2 (en) | 2011-09-27 | 2014-09-23 | Z124 | Detail on triggers: transitional states |
-
2011
- 2011-09-27 US US13/246,665 patent/US9047102B2/en active Active
- 2011-09-29 BR BR112013007342A patent/BR112013007342A2/pt not_active Application Discontinuation
- 2011-09-29 WO PCT/US2011/053835 patent/WO2012044738A2/en active Application Filing
- 2011-09-29 JP JP2013531827A patent/JP2013546043A/ja not_active Withdrawn
- 2011-09-29 EP EP11829853.8A patent/EP2622463B1/en active Active
- 2011-09-29 CN CN201180058046.3A patent/CN103339600B/zh active Active
- 2011-09-29 MX MX2013003515A patent/MX2013003515A/es active IP Right Grant
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018084790A (ja) * | 2016-11-17 | 2018-05-31 | 富士ゼロックス株式会社 | 端末装置およびプログラム |
JP7052220B2 (ja) | 2016-11-17 | 2022-04-12 | 富士フイルムビジネスイノベーション株式会社 | 端末装置およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2012044738A3 (en) | 2012-06-21 |
BR112013007342A2 (pt) | 2016-11-08 |
CN103339600B (zh) | 2017-10-31 |
EP2622463A2 (en) | 2013-08-07 |
EP2622463B1 (en) | 2019-12-25 |
CN103339600A (zh) | 2013-10-02 |
WO2012044738A2 (en) | 2012-04-05 |
EP2622463A4 (en) | 2015-03-04 |
MX2013003515A (es) | 2013-09-26 |
US9047102B2 (en) | 2015-06-02 |
US20120086717A1 (en) | 2012-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8819705B2 (en) | User interaction support across cross-environment applications | |
EP2622463B1 (en) | Instant remote rendering | |
US8933949B2 (en) | User interaction across cross-environment applications through an extended graphics context | |
US8957905B2 (en) | Cross-environment user interface mirroring | |
US10503344B2 (en) | Dynamic cross-environment application configuration/orientation | |
US8966379B2 (en) | Dynamic cross-environment application configuration/orientation in an active user environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20141202 |