MX2013003515A - Presentacion remota instantanea. - Google Patents

Presentacion remota instantanea.

Info

Publication number
MX2013003515A
MX2013003515A MX2013003515A MX2013003515A MX2013003515A MX 2013003515 A MX2013003515 A MX 2013003515A MX 2013003515 A MX2013003515 A MX 2013003515A MX 2013003515 A MX2013003515 A MX 2013003515A MX 2013003515 A MX2013003515 A MX 2013003515A
Authority
MX
Mexico
Prior art keywords
application
operating system
graphics
mobile
desktop
Prior art date
Application number
MX2013003515A
Other languages
English (en)
Inventor
Wuke Liu
Original Assignee
Z124
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Z124 filed Critical Z124
Publication of MX2013003515A publication Critical patent/MX2013003515A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1423Digital 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/39Control of the bit-mapped memory
    • G09G5/399Control 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)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)

Abstract

Un dispositivo de cómputo móvil con un sistema de operación móvil y sistema de operación de escritorio que funciona actual e independientemente en un núcleo compartido sin virtualización. El sistema de operación móvil proporciona una experiencia de usuario para el dispositivo de cómputo móvil que adapta al ambiente móvil. El sistema de operación de escritorio proporciona una completa experiencia de usuario de escritorio cuando se conecte el dispositivo de cómputo móvil a un segundo ambiente de usuario. La presentación de ambiente cruzado y el soporte de interacción de usuario proporcionan una experiencia de cómputo sin problema en un ambiente de cómputo de sistema de operación múltiple. Se proporciona el despliegue en tiempo real o instantáneo de una aplicación que funciona en el sistema de operación móvil dentro de un ambiente del sistema de operación de escritorio para presentar los gráficos de aplicación para la aplicación dentro del sistema de operación de escritorio. Una aplicación de consola del sistema de operación de escritorio puede accesar información de superficie para la aplicación de la memoria compartida y presentar la aplicación dentro de una ventana de consola del ambiente de cómputo asociado con el sistema de operación de escritorio. El dispositivo de cómputo móvil puede ser un teléfono inteligente que hace funcionar el sistema de operación móvil Android y una distribución Linux de escritorio completa en un núcleo de Android modificado.

Description

PRESENTACIÓN REMOTA INSTANTÁNEA DESCRIPCIÓN DE LA INVENCIÓN Esta solicitud se relaciona generalmente con el campo de ambientes de cómputo móvil, y más particularmente a soportar múltiples ambientes de usuarios a través del uso de múltiples sistemas operativos en un solo dispositivo de cómputo móvil.
Los dispositivos de cómputo móvil se vuelven cada vez más universales en la sociedad de hoy en día. Por ejemplo, a finales de 2008, el 90 por ciento de los estadounidenses tenia un dispositivo inalámbrico móvil. Al mismo tiempo, las capacidades de los dispositivos móviles avanzaban rápidamente, incluyendo teléfonos inteligentes que integran capacidades de cómputo avanzadas con capacidades de telefonía móvil. Los proveedores de teléfonos móviles han lanzado cientos de nuevos teléfonos inteligentes en los últimos tres años, de acuerdo con las diversas plataformas diferentes (por ejemplo, iPhone de Apple, Android, BlackBerry, Palm y Windows Mobile) . En los Estados Unidos, la penetración de los teléfonos inteligentes alcanzó casi el 23% a mediados de 2010, y más del 35% en algunos grupos de edades. En Europa, el mercado de teléfonos inteligentes creció por 41% de 2009 a 2010, con más de 60 millones de suscriptores de teléfonos inteligentes para julio de 2010 sólo en los cinco países más grandes de Europa.
Aunque los teléfonos inteligentes ganan popularidad y capacidad de cómputo, proporcionan una experiencia de usuario limitada. Específicamente, tienen de manera típica un sistema operativo que se modifica para el hardware del dispositivo móvil y un conjunto restringido de aplicaciones que se encuentra disponible para el sistema operativo modificado. Por ejemplo, muchos teléfonos inteligentes ejecutan el sistema operativo Android de Google. Android ejecuta sólo aplicaciones que se desarrollan específicamente para ejecutarse dentro de un ambiente de tiempo de ejecución de máquina virtual basado en Java. Además, aunque Android se basa en un módulo central modificado de Linux, utiliza diferentes bibliotecas C estándar, administradores de sistemas, y servicios distintos a Linux. Por consiguiente, las aplicaciones escritas para Linux no se ejecutan en Android sin modificación o transferencia. De manera similar, el iPhone de Apple utiliza el sistema operativo móvil iOS. Nuevamente, aunque iOS se deriva del OS X de Mac, las aplicaciones desarrolladas para OS X no se ejecutan en iOS . Por lo tanto, aunque muchas aplicaciones se encuentran disponibles para sistemas operativos móviles tales como Android e iOS, muchas otras aplicaciones comunes para sistemas operativos de escritorio tales como Linux y OS X de Mac no se encuentran disponibles en las plataformas móviles.
Por consiguiente, los teléfonos inteligentes típicamente son adecuados para un conjunto limitado de experiencias de usuario y proporcionan aplicaciones diseñadas principalmente para el ambiente móvil. En particular, los teléfonos inteligentes no proporcionan una experiencia de usuario de escritorio adecuada, ni se ejecutan en las aplicaciones de escritorio más comunes. Como resultado, muchos usuarios llevan y utilizan múltiples dispositivos de cómputo, que incluyen un teléfono inteligente, computadora tipo laptop, y/o una computadora tipo Tablet . En este caso, cada dispositivo tiene su propia CPU, memoria, almacén de archivos, y sistema operativo.
La conectividad y uso compartido de archivos entre teléfonos inteligentes y otros dispositivos de cómputo implican vincular un dispositivo (por ejemplo, teléfono inteligente, que ejecuta un OS móvil) a un segundo dispositivo, completamente diferente (por ejemplo, computadora tipo notebook, de escritorio o tableta que ejecuta un OS de escritorio), a través de una conexión inalámbrica o alámbrica. La información se comparte a través de dispositivos al sincronizar datos entre aplicaciones que se ejecutan por separado en cada dispositivo. Este proceso, típicamente denominado "sincronización", es engorroso y, generalmente requiere administración activa por el usuario.
Las modalidades de la presente invención se dirigen a proporcionar experiencia de cómputo móvil de un teléfono inteligente y experiencia de usuario adecuada en un ambiente de terminal secundario en un sólo dispositivo de cómputo móvil. Un ambiente de terminal secundario puede ser cierta combinación de dispositivos de presentación visual (por ejemplo, monitor o pantalla) , dispositivos de entrada (por ejemplo, ratón, almohadilla táctil, pantalla táctil, teclado, etc.), y otros periféricos de cómputo (por ejemplo, HDD, unidad de disco óptico, barra de memoria, cámara, impresora, etc.) conectados al dispositivo de cómputo por una conexión alámbrica (por ejemplo, USB, Firewire, Thunderbolt, etc.) o inalámbrica (por ejemplo, Bluetooth, WiFi, etcétera) . En modalidades, un sistema operativo móvil asociado con la experiencia de usuario de ambiente móvil y un sistema operativo de escritorio asociado con la experiencia de usuario de ambiente de terminal secundario se ejecutan de manera concurrente e independiente en un módulo central compartido.
De acuerdo con un aspecto consistente con varias modalidades, los gráficos de aplicación para una primera y segunda aplicaciones, compilados para y en ejecución concurrente active dentro de un primer sistema operativo, se mantienen al realizar de manera iterativa las etapas que incluyen calcular actualizaciones para superficies de la primera aplicación utilizando el primer sistema operativo, presentar las superficies actualizadas de la primera aplicación utilizando el primer sistema operativo para generar una primera trama de gráficos en una primera ubicación de memoria, calcular actualizaciones en superficies de la segunda aplicación utilizando el primer sistema operativo, almacenar las superficies actualizadas de la segunda aplicación en una segunda ubicación de memoria, la segunda ubicación de memoria es una ubicación de memoria compartida que se puede acceder por el primer sistema operativo y un segundo sistema operativo que se ejecuta de manera concurrente en un módulo central compartido, y presentar las superficies actualizadas de la segunda aplicación utilizando una aplicación de consola del segundo sistema operativo para generar una segunda trama de gráficos en tercera ubicación de memoria.
De acuerdo con otros aspectos consistentes con varias modalidades, la primera trama de gráficos puede desplegarse desde la primera ubicación de memoria hasta una pantalla de un primer ambiente de cómputo asociado con el primer sistema operativo; y la segunda trama de gráficos puede desplegarse desde la tercera ubicación de memoria hasta una pantalla de un segundo ambiente de cómputo asociado con el segundo sistema operativo. La segunda trama de gráficos puede desplegarse desde la tercera ubicación de memoria hasta una pantalla de un segundo ambiente de cómputo asociado con el segundo sistema operativo mediante la aplicación de consola. La aplicación de consola puede recibir una notificación de escalado que indica que las superficies actualizadas se encuentran disponibles en la segunda ubicación de memoria. Recibir la notificación de escalado puede incluir recibir un descriptor de archivos en la segunda ubicación de memoria. La notificación de escalado puede recibirse a través de una canal de comunicación entre procesos. El método puede incluir recibir una referencia a la segunda ubicación de memoria al mapear el descriptor de archivos en el espacio de proceso de la aplicación de consola y/o leer la segunda ubicación de memoria por referencia para presentar las superficies actualizadas de la segunda aplicación .
De acuerdo con otros aspectos consistentes con varias modalidades, el método puede incluir iniciar un objeto presentador en la aplicación de consola, y registrar, en un servidor de gráficos del primer sistema operativo, una interfaz remota del objeto presentador para recibir notificaciones de escalado para las superficies de la primera aplicación. El primer sistema operativo puede ser un sistema operativo móvil y el segundo sistema operativo puede ser un sistema operativo de escritorio. La segunda aplicación puede ser incompatible con un servidor de gráficos del segundo sistema operativo. La segunda aplicación puede ser una aplicación de Android y el servidor de gráficos del segundo sistema operativo puede ser un servidor de gráficos X-Windows. La presentación de las superficies actualizadas de la segunda aplicación puede incluir componer las superficies actualizadas por un orden de capa.
De acuerdo con otros aspectos consistentes con varias modalidades, un dispositivo de cómputo móvil incluye una primera aplicación y una segunda aplicación en ejecución concurrente activa dentro de un primer sistema operativo. Una primera superficie de gráficos se asocia con la primera aplicación, y un servidor de gráficos del primer sistema operativo se puede operar para presentar la primera superficie de gráficos para generar una primera trama de gráficos en una primera ubicación de memoria. Una segunda superficie de gráficos se asocia con la segunda aplicación, la segunda superficie de gráficos almacenada en una segunda ubicación de memoria, la segunda ubicación de memoria es una ubicación de memoria compartida que se puede acceder por el primer sistema operativo y un segundo sistema operativo que se ejecuta de manera concurrente en un módulo central compartido. Una aplicación de consola se ejecuta dentro del segundo sistema operativo, la aplicación de consola se puede operar para presentar la segunda superficie de gráficos para generar una segunda trama de gráficos en una tercera ubicación de memoria.
De acuerdo con otros aspectos consistentes con varias modalidades, un objeto presentador se ejemplifica por la aplicación de consola que incluye un método remoto para presentar la segunda superficie de gráficos para generar la segunda trama de gráficos. La aplicación de consola puede recibir una notificación de escalado del servidor de gráficos del primer sistema operativo que indica que la segunda superficie de gráficos se ha actualizado. Un servidor de gráficos del segundo sistema operativo puede ser un servidor de gráficos tipo X-Windows y la segunda aplicación puede utilizar una biblioteca de gráficos del primer sistema operativo que es incompatible con el servidor de gráficos tipo X-Windows del segundo sistema operativo.
De acuerdo con otros aspectos consistentes con varias modalidades, notificar a la aplicación de consola del segundo sistema operativo puede incluir pasar un descriptor de archivos a la aplicación de consola, el descriptor de archivos indica que la información de gráficos de aplicación se encuentra disponible en una ubicación de memoria compartida, la ubicación de memoria compartida accesible por el primer sistema operativo y el segundo sistema operativo. El descriptor de archivos puede pasarse a través de un canal de comunicación entre procesos, el cual puede ser una conexión de dominio Unix o interfaz Binder. La información de gráficos de aplicación puede incluir información de superficie de la primera aplicación. Alternativamente, la información de gráficos de aplicación puede incluir información de gráficos presentada de la primera aplicación. El segundo sistema operativo puede iniciar la solicitud para lanzar la primera aplicación en respuesta a una selección de usuario de un elemento de menú de un menú del segundo sistema operativo .
BREVE DESCRIPCIÓN DE LOS DIBUJOS Las modalidades de la presente invención se ilustran en las figuras referidas de los dibujos, en las cuales números similares se refieren a elementos similares a través de la descripción de las figuras.
La FIGURA 1 ilustra un ambiente de cómputo que proporciona diferentes experiencias de cómputo de usuario, de acuerdo con varias modalidades.
La FIGURA 2 ilustra una arquitectura de sistema ejemplar para un dispositivo de cómputo móvil, de acuerdo con varias modalidades.
La FIGURA 3 ilustra una arquitectura de sistema operativo para un ambiente de cómputo, de acuerdo con varias modalidades .
La FIGURA 4 ilustra un ambiente de cómputo ejemplar que emplea varios aspectos de las modalidades.
La FIGURA 5 ilustra aspectos de una arquitectura de sistema operativo para un ambiente de cómputo, de acuerdo con varias modalidades.
La FIGURA 6 ilustra un procedimiento de arranque ejemplar que puede utilizarse para configurar una arquitectura de sistema operativo de un dispositivo de cómputo móvil con mayor detalle, de acuerdo con varias modalidades .
La FIGURA 7 ilustra una configuración de la arquitectura de sistema operativo para proporcionar presentación de ambiente cruzado de aplicaciones y/o espacios de interacción de usuario, de acuerdo con varias modalidades.
La FIGURA 8 ilustra un ambiente de cómputo con múltiples ambientes de usuario, de acuerdo con varias modalidades .
La FIGURA 9 ilustra aspectos de procesamiento remoto de ambiente cruzado, de acuerdo con varias modalidades .
La FIGURA 10 muestra un diagrama de flujo de un método ilustrativo para representación remota de ambiente cruzado en un contexto de presentación no extendido, de acuerdo con varias modalidades.
La FIGURA 11 ilustra un flujo de proceso de registro y escalado para presentación remota de ambiente cruzado de acuerdo con varias modalidades.
La FIGURA 12 muestra un diagrama de flujo de otro método ilustrativo para la presentación de ambiente cruzado en un contexto de presentación no extendido, de acuerdo con varias modalidades.
La FIGURA 13 ilustra la configuración 300b de arquitectura de sistema operativo para proporcionar soporte de interacción de usuario para aplicaciones de ambiente cruzado, de acuerdo con varias modalidades.
La FIGURA 14 ilustra aspectos de soporte de interacción de usuario para aplicaciones de ambiente cruzado presentadas utilizando un contexto de gráficos no extendido, de acuerdo con varias modalidades.
La FIGURA 15 ilustra aspectos de soporte de interfaz de usuario concurrente a través de múltiples OS utilizando contextos de presentación extendidos, de acuerdo con varias modalidades.
La FIGURA 16 muestra un diagrama de flujo de un método ilustrativo para presentación remota de ambiente cruzado en un contexto de presentación extendido, de acuerdo con varias modalidades.
La FIGURA 17 muestra un diagrama de flujo de otro método ilustrativo para la presentación de ambiente cruzado en un contexto de presentación extendido, de acuerdo con varias modalidades.
La FIGURA 18a ilustra un ambiente de usuario que puede emplearse en presentación de ambiente cruzado, en un contexto de presentación extendido, de acuerdo con varias modalidades .
La FIGURA 18b ilustra una cola de entrada extendida que puede emplearse en presentación de ambiente cruzado, en un contexto de presentación extendido, de acuerdo con varias modalidades.
La FIGURA 19 ilustra un método para recibir eventos de entrada que pueden emplearse en presentación de ambiente cruzado, en un contexto de presentación extendido, de acuerdo con varias modalidades.
La FIGURA 20 muestra un diagrama de flujo de un método ilustrativo para la presentación de ambiente cruzado para proporcionar un contexto duplicado, de acuerdo con varias modalidades.
La FIGURA 21 muestra un diagrama 2100 de flujo de otro método ilustrativo para presentación de ambiente cruzado para proporcionar un contexto duplicado, de acuerdo con varias modalidades.
La FIGURA 22 ilustra aspectos de redirección de ambiente cruzado, de acuerdo con varias modalidades.
La FIGURA 23 ilustra un diagrama de flujo de un método ilustrativo que puede emplearse para realizar aspectos de redirección de ambiente cruzado, de acuerdo con varias modalidades .
La figura 24 ilustra un diagrama de flujo de otro método ilustrativo que puede emplearse para realizar aspectos de redirección de ambiente cruzado, de acuerdo con varias modalidades .
Los dispositivos de telefonía móvil, (es decir, teléfonos inteligentes, micro-teléfonos, estaciones móviles, dispositivos de comunicación portátiles, etc.) que incluyen capacidades de cómputo incrementan cada vez más en popularidad. Muchos de estos teléfonos inteligentes incluyen un sistema operativo móvil ("OS") que se ejecuta en un procesador móvil. Aunque los procesadores móviles y los SO móviles han incrementado las capacidades de estos dispositivos, los teléfonos inteligentes no se han diseñado para remplazar ambientes de computadora personal ("PC") (es decir, Windows, OS X de Mac, Linux) tales como computadoras de escritorio tipo notebook por lo menos debido a la. experiencia de usuario limitada proporcionada. En particular, los dispositivos de interfaz de usuario encontrados en teléfonos inteligentes típicamente se diseñan para el ambiente móvil. Por ejemplo, los teléfonos inteligentes típicamente utilizan un teclado QWERTY de tipo pulgar pequeño, pantalla de visualizacion de pantalla táctil, rueda de clic y/o rueda de desplazamiento como dispositivos de interfaz de usuario. Los OS móviles, así como aplicaciones (es decir, "Apps") desarrolladas para OS móviles, típicamente se diseñan para las restricciones del ambiente móvil, que incluye un procesador móvil y los dispositivos de interfaz de usuario presentes en los dispositivos móviles. Por lo tanto, muchas aplicaciones que se han desarrollado para sistemas operativos de PC no se encuentran disponibles para OS móviles (es decir, no se compilan para y no se ejecutan en OS móviles) . Además, para algunas tareas tales como escribir o editar documentos, un teclado de tamaño completo y una pantalla grande son más fáciles de usar que los componentes de interfaz de usuario típicamente encontrados en un teléfono inteligente .
Por consiguiente, los usuarios típicamente utilizan dispositivos de cómputo separados para cada experiencia de cómputo, que incluye un teléfono inteligente, computadora tipo tableta, computadora tipo laptop, y/o computadora de escritorio. En este caso, cada dispositivo tiene su propia CPU, memoria, almacén de archivos y OS. La conectividad y el uso compartido de archivos entre los teléfonos inteligentes y otros dispositivos implican vincular un dispositivo (por ejemplo, teléfono inteligente, que ejecuta un OS móvil) a un segundo dispositivo, completamente diferente (por ejemplo, computadora tipo notebook, de escritorio o tableta que ejecuta un OS de escritorio) , a través de una conexión alámbrica o inalámbrica. La información se comparte a través de dispositivos al sincronizar datos entre aplicaciones que se ejecutan por separado en cada dispositivo. Este proceso, típicamente denominado "sincronización", es engorroso y, generalmente, requiere administración activa por el usuario.
La FIGURA 1 ilustra un ambiente 100 de cómputo que proporciona múltiples experiencias de cómputo de usuario con un dispositivo móvil que incluye múltiples sistemas operativos asociados con espacios de interacción de usuario separados (es decir, ambientes de usuario) , de acuerdo con varias modalidades. Un primer espacio 115 de interacción de usuario de ambiente 100 de cómputo incluye pantallas 116 y dispositivos 118 de E/S del dispositivo 110 de cómputo móvil. Cuando el dispositivo 110 de cómputo móvil se opera como un dispositivo móvil independiente, el OS 130 móvil presenta una experiencia de usuario de cómputo móvil típica a través del espacio 115 de interacción de usuario. La experiencia de cómputo móvil proporcionada por el OS 130 móvil típicamente incluye capacidades de telefonía móvil y una interfaz de usuario gráfica ("GUI") adecuada para espacio 115 de interacción de usuario que incluye pantallas 116 y dispositivo 18 de E/S. Por ejemplo, las pantallas 116 pueden ser pantallas de visualizacion de pantalla táctil y programas de aplicación (es decir, "Apps") que se ejecutan en el OS 130 móvil pueden controlarse principalmente a través de una GUI basada en gestos del OS 130 móvil utilizando pantallas de visualizacion 116 de pantalla táctil.
En un ambiente 100 de cómputo, el dispositivo 110 de cómputo móvil puede conectarse con un ambiente 140- de terminal secundario que incluye dispositivos 144, 146 y/o 148 de E/S. En modalidades, el dispositivo 110 de cómputo móvil se acopla con un ambiente 140 de terminal secundario, al conectar el puerto 120 de dispositivo 110 de cómputo móvil al puerto 142 de ambiente 140 de terminal secundario. En este caso, el ambiente 140 de terminal secundario presenta un segundo espacio de interacción de usuario del ambiente 100 de cómputo. En algunos casos, el segundo espacio de interacción de usuario puede ser más adecuado para una experiencia de cómputo de escritorio. En estos casos, el OS 160 de escritorio puede asociarse con el ambiente 140 de terminal secundario para proporcionar capacidades completas de una computadora portátil, de tableta, o de escritorio a través del segundo espacio de interacción de usuario.
En modalidades, el Os 130 móvil y el OS 160 de escritorio se ejecutan de manera concurrente en un módulo central compartido en un procesador de dispositivo 110 de cómputo móvil. La ejecución concurrente de un OS móvil y un OS de escritorio en un módulo central compartido se describe con mayor detalle en la Solicitud de Patente Estadounidense No. 13/217,108, presentada el 24 de agosto del 2011, titulada "MULTISISTEMAS OPERATIVOS", incorporada en la presente para referencia. De esta manera, un dispositivo de cómputo móvil simple puede proporcionar una experiencia de cómputo móvil a través de un primer espacio de interacción de usuario y una experiencia de cómputo de escritorio a través de un segundo espacio de interacción de usuario. Aunque la capacidad de llevar a cabo un dispositivo móvil que puede ejecutar múltiples sistemas operativos de manera concurrente a través de espacios de interacción de usuario separados resuelve un número de problemas para un usuario, cada espacio de interacción de usuario (a través del OS móvil y el OS de escritorio que se ejecutan de manera concurrente) generalmente proporciona un conjunto separado de aplicaciones disponibles y funcionalidad de usuario.
Las modalidades de la invención se abordan para facilitar la ejecución aparente de una aplicación que se ejecuta en un primer OS (por ejemplo, OS 130 móvil) dentro de un segundo OS (por ejemplo, OS 160 de escritorio) , donde el primer y segundo OS se ejecutan de manera concurrente en un módulo central compartido. De manera notable, proporcionar a un usuario con un soporte de entrada (por ejemplo, dispositivo de entrada) y de salida (por ejemplo, pantalla, audio, etc.) en un segundo OS para aplicaciones compiladas para y que se ejecutan en un primer OS (por ejemplo, incompatibles) involucra abordar un número de problemas. Problemas adicionales pueden surgir cuando se maneja una visualización e interactividad de múltiples aplicaciones que se ejecutan de manera concurrente.
Considerar, por ejemplo, una primera y segunda aplicaciones donde ambas se compilan para el primer OS y se ejecutan de manera concurrente en el primer OS. Sin embargo, un usuario desea ver la salida de gráficos de la primera aplicación e interactuar con esa primera aplicación a través del dispositivo de entrada/salida asociado con el primer OS (por ejemplo, utilizando una pantalla de visualización de pantalla táctil de un ambiente de cómputo móvil) , y ver la salida de gráficos de la segunda aplicación e interactuar con esa segunda aplicación a través del dispositivo de entrada/salida asociado con el segundo OS (por ejemplo, utilizando una pantalla, teclado, y ratón de un ambiente de cómputo de escritorio) . El manejo de este escenario implica un manejo concurrente de gráficos en múltiples ambientes de visualización y procesamiento concurrentes de múltiples corrientes de entradas/salidas para aplicaciones separadas todas en sistemas operativos separados (por ejemplo, incompatibles) .
Por consiguiente, las modalidades proporcionan varias técnicas novedosas para acceder a aplicaciones de un primer OS dentro de un espacio de interacción de usuario de un segundo OS, desplegar aplicaciones que se ejecutan en el primer OS dentro del espacio de interacción de usuario del segundo OS, y manejar la interacción de usuario con esas aplicaciones a través del espacio de interacción del usuario del segundo OS. Las modalidades incluyen una aplicación de consola del segundo OS que soporta varias características de interacción de pantalla y usuario de aplicaciones de ambiente cruzado .
Un conjunto de modalidades proporciona técnicas para el soporte de interfaz de usuario concurrente a través de múltiples ambientes de cómputo de OS utilizando un contexto de presentación denominado "no extendido". Otro conjunto de modalidades proporciona técnicas para el soporte de interfaz de usuario concurrente a través de múltiples ambientes de cómputo de OS que utilizan un contexto de presentación denominado "extendido". Aún otro conjunto de modalidades proporciona técnicas para soporte de interfaz de usuario concurrente a través de múltiples OS utilizando un contexto denominado "duplicado". Aún otro conjunto de modalidades proporciona acceso desde el espacio de interacción de usuario del segundo OS a las aplicaciones disponibles en el primer OS. Cada uno de estos conjuntos de modalidades se describirá más completamente a continuación.
Como se describe en lo anterior, el ambiente 100 de cómputo proporciona múltiples experiencias de cómputo de usuario a través de múltiples espacios de interacción de usuario asociados con un dispositivo móvil que ejecuta múltiples sistemas operativos de manera concurrente. Específicamente, debido a que el dispositivo 110 de cómputo móvil incluye múltiples OS, donde cada OS es adecuado para un ambiente de cómputo particular, el dispositivo 110 de cómputo móvil puede adaptarse con dispositivos de E/S externos para proporcionar una amplia gama de experiencias de usuario con un solo dispositivo de cómputo móvil. Por ejemplo, un usuario puede tener un dispositivo 110 de cómputo móvil y un ambiente 140 de terminal secundario que incluye un teclado, pantalla, y/o dispositivos de señalamiento en una carcasa tipo laptop. Cuando el dispositivo 110 de cómputo móvil se conecta con el ambiente de terminal secundario tipo laptop, las capacidades completas del OS 160 de escritorio se encuentran disponibles a través del ambiente 140 de terminal secundario.
La FIGURA 2 ilustra una arquitectura de sistema de hardware ejemplar para el dispositivo 110 de cómputo móvil, de acuerdo con varias modalidades. El hardware 112 de dispositivo de cómputo móvil incluye el procesador 114 móvil que incluye uno o más núcleos 204 de CPU y la interfaz 220 de pantalla externa. Generalmente, el hardware 112 del dispositivo de cómputo móvil incluye también dispositivos 118 de E/S, memoria 206, dispositivos 208 de almacenamiento, controlador 210 de pantalla de visualización de pantalla táctil conectado a la pantalla de visualización 116 de pantalla táctil, el IC 214 de manejo de energía conectado a la batería 216, módem 218 celular, dispositivos 222 de comunicación, y/u otros dispositivos 224 que se conectan al procesador 114 a través de varias señales de comunicación e interfaces. Los dispositivos 18 de E/S generalmente incluyen botones y otros componentes de interfaz de usuario que pueden emplearse en el dispositivo 110 de cómputo móvil. Por ejemplo, los dispositivos 118 de E/S pueden incluir un conjunto de botones, (por ejemplo, atrás, menú, inicio, búsqueda, etc.), área de gestos fuera de pantalla, rueda de clic, rueda de desplazamiento, teclado QWERTY, etc. Otros dispositivos 224 pueden incluir, por ejemplo, dispositivos de GPS, conectividad de LAN, micrófonos, altavoces, cámaras, acelerómetros y/o interfaces de tarjetas de MS/MMC/SD/SDIO . La interfaz 220 de pantalla externa puede ser cualquier interfaz de pantalla adecuada (por ejemplo, VGA, DVI, HDMI, etc . ) .
El procesador 114 puede ser un procesador basado en AR móvil. En modalidades, el procesador 114 móvil es un procesador basado en ARM móvil, tal como OMAP3430 de Texas Instruments, PXA320 de Marvell, ÍMX51 de Freescale o QSD8650/8250 de Qualcomm. Sin embargo, el procesador 114 móvil puede ser otro procesador móvil basado en ARM adecuado o procesador basado en otras arquitecturas de procesadores, tales como, por ejemplo, arquitecturas de procesadores basados en x86 u otras arquitecturas de procesadores basados en RISC.
Aunque la Figura 2 ilustra una implementación 112 de hardware ejemplar para el dispositivo 110 de cómputo móvil, otras arquitecturas se contemplan dentro del alcance de la invención. Por ejemplo, varios componentes ilustrados en la Figura 2 como externos al procesador 114 móvil pueden integrarse en el procesador 114 móvil. Opcionalmente, la interfaz 220 de pantalla externa, mostrada en la Figura 2 como integrada en el procesador 114 móvil, puede ser externa al procesador 114 móvil. Adicionalmente, otras arquitecturas de computadora que emplean un bus de sistema, procesador de gráficos discretos, y/u otras variaciones de arquitectura son adecuadas para emplear aspectos de la presente invención.
La FIGURA 3 ilustra la arquitectura 300 de OS que puede emplearse para ejecutar el OS 130 móvil y el OS 160 de escritorio de manera concurrente en el dispositivo 110 de cómputo móvil, de acuerdo con varias modalidades. Como se ilustra en la FIGURA 3, el OS 130 móvil y el OS 160 de escritorio son sistemas operativos independientes. Específicamente, el OS 130 móvil y OS 160 de escritorio pueden tener bibliotecas de usuarios independientes e incompatibles, sistemas de gráficos, y/o capas de infraestructura. Funciones e instrucciones para la arquitectura 300 de OS pueden almacenarse como código de programa de cómputo en un medio legible por computadora tangible del dispositivo 110 de cómputo móvil. Por ejemplo, las instrucciones para la arquitectura 300 de OS pueden almacenarse en los dispositivos 208 de almacenamiento del hardware 112 de dispositivo de cómputo móvil.
En la arquitectura 300 de OS, el OS 130 móvil y el OS 160 de escritorio se ejecutan de manera concurrente en un módulo central 320 compartido. Esto significa que el OS 130 móvil y el OS 160 de escritorio se ejecutan en el módulo central 320 compartido al mismo tiempo. Específicamente, el OS 130 móvil y el OS 160 de escritorio se ejecutan en el módulo central 320 compartido a través de la misma interfaz 322 de módulo central, por ejemplo, al hacer llamadas de sistema al módulo central 320 compartido. El módulo central 320 compartido maneja la programación de tareas para los procesos de OS 130 móvil y OS 160 de escritorio. En este respecto, el OS 130 móvil y el OS 160 de escritorio se ejecutan de manera independiente y concurrente en el módulo central 320 compartido. Además, el módulo central 320 compartido se ejecuta directamente en el procesador 114 móvil del hardware 112 de dispositivo de cómputo móvil, como se ilustra por la interfaz 312 de hardware. Específicamente, el módulo central 320 compartido maneja directamente los recursos de cómputo de la interfaz 112 de dispositivo de cómputo móvil tal como programación de CPU, acceso a memoria, y E/S. En este sentido, los recursos de hardware no se virtualizan, lo que significa que el OS 130 móvil y el OS 160 de escritorio hacen llamadas de sistema a través de la interfaz 322 de módulo central sin la memoria virtual o acceso de E/S.
Como se ilustra en la FIGURA 3, el OS 130 móvil tiene la capa 330 de bibliotecas, la capa 340 de infraestructura de aplicación, y la capa 350 de aplicación. En el OS 130 móvil, las aplicaciones 352 y 354 se ejecutan en la capa 350 de aplicación soportada por la capa 340 de infraestructura de aplicación del OS 130 móvil. La capa 340 de infraestructura de aplicación incluye administradores 342 y servicios 344 que se utilizan por las aplicaciones que se ejecutan en el OS 130 móvil. Por ejemplo, la capa 340 de infraestructura de aplicación puede incluir un administrador de ventanas, administrador de actividades, administrador de paquetes, administrador de recursos, administrador de telefonía, controlador de gestos, y/u otros administradores y servicios para el ambiente móvil. La capa 340 de infraestructura de aplicación puede incluir un ambiente de tiempo de ejecución de aplicaciones móviles que ejecuta aplicaciones desarrolladas para el OS 130 móvil. El ambiente de tiempo ejecución de aplicación móvil puede optimizarse para recursos de cómputo móviles, tales como energía de procesamiento inferior y/o espacio de memoria limitado. El ambiente de tiempo ejecución de aplicación móvil puede basarse en el módulo central para aislamiento de procesos, manejo de memoria y soporte de cadena. La capa 330 de bibliotecas incluye bibliotecas 332 de usuario que implementan funciones comunes, tales como manipulación de E/S y de cadenas, funciones de gráficos, capacidades de bases de datos, capacidades de comunicación, y/u otras funciones y capacidades .
Como se ilustra en la Figura 3, el OS 160 de escritorio tiene la capa 360 de bibliotecas, la capa 370 de infraestructura, y la capa 380 de aplicación. En el OS 160 de escritorio, las aplicaciones 382 y 384 se ejecutan en la capa 380 de aplicación soportada por la capa 370 de infraestructura de aplicación de OS 160 de escritorio. La capa 370 de infraestructura de aplicación incluye los administradores 372 y los servicios 374 que se utilizan por las aplicaciones que se ejecutan en el OS 160 de escritorio. Por ejemplo, la capa 370 de infraestructura de aplicación puede incluir un administrador de ventanas, administrador de actividades, administrador de paquetes, administrador de recursos, y/u otros administradores y servicios comunes para un ambiente de escritorio. La capa 360 de bibliotecas puede incluir bibliotecas 362 de usuario que implementan funciones comunes, tales como manipulación de E/S y cadenas, funciones de gráficos, capacidades de bases de datos, capacidades de comunicación, y/u otras funciones y capacidades.
En varias modalidades de la presente descripción, el OS 160 de escritorio se ejecuta en un ambiente de ejecución separado del OS 130 móvil. Por ejemplo, el OS 130 móvil puede ejecutarse en un ambiente de ejecución de raíz y el OS 160 de escritorio puede ejecutarse en un ambiente de ejecución secundario establecido bajo el ambiente de ejecución de raíz. Procesos y aplicaciones que se ejecutan en el OS 130 móvil acceden a las bibliotecas 332 de usuario, administradores 342 y servicios 344 en el ambiente de ejecución de raíz. Procesos y aplicaciones que se ejecutan en el OS 160 de escritorio acceden a las bibliotecas 362 de usuario, administradores 372 y los servicios 374 en el ambiente de ejecución secundario.
En modalidades, el OS 130 móvil y el OS 160 de escritorio son sistemas operativos independientes con bibliotecas de usuario incompatibles, sistemas de gráficos y/o infraestructuras de aplicaciones. Por lo tanto, las aplicaciones desarrolladas para el OS 130 móvil pueden no ejecutarse directamente en el OS 160 de escritorio, y las aplicaciones desarrolladas para el OS 160 de escritorio pueden no ejecutarse directamente en el OS 130 móvil. Por ejemplo, la aplicación 352, que se ejecuta en la capa 350 de aplicación del OS 130 móvil, puede ser incompatible con el OS 160 de escritorio, lo que significa que la aplicación 352 podría no ejecutarse en el OS 160 de escritorio. Específicamente, la aplicación 352 puede depender de los administradores 342, servicios 344, y/o bibliotecas 332 en el OS 130 móvil que no se encuentran disponibles o no son compatibles con los administradores 372, servicios 374, y/o bibliotecas 362 del OS 160 de escritorio.
Como resultado, el OS 130 móvil y el OS 160 de escritorio pueden tener diferentes conjuntos de aplicaciones disponibles. En este respecto, el OS 130 móvil y el OS 160 de escritorio de la arquitectura 300 de OS proporcionan experiencias de usuario separadas a través de conjuntos separados de aplicaciones que se pueden acceder a través de espacios de interacción de usuario separados. El usuario puede acceder a las aplicaciones disponibles en (es decir, compiladas para y cargadas dentro deí ambiente de ejecuciones) el OS 130 móvil a través de un primer espacio de interacción de usuario asociado con el OS 130 móvil, y las aplicaciones disponibles en el OS 160 de escritorio a través de un segundo espacio de interacción de usuario asociado con el OS 160 de escritorio.
Como se describe en lo anterior, los sistemas operativos móviles típicamente no utilizan el mismo ambiente de gráficos que los sistemas operativos de escritorio. Los ambientes de gráficos para OS de escritorio se diseñaron para flexibilidad y alto rendimiento. Por ejemplo, el sistema X-Windows, utilizado por algunos OS de escritorio, proporcionan plataforma e independencia de red a expensas de un mayor procesamiento y recursos del sistema. En contraste, los ambientes de gráficos para OS móviles se diseñan más para eficiencia y los dispositivos de entrada de usuario específicos de un ambiente de cómputo móvil y menos para flexibilidad. Debido a que los ambientes de gráficos de OS móviles de escritorio con frecuencia son diferentes, una aplicación que se ejecuta en un OS móvil puede no redirigirse para desplegarse dentro de un espacio de usuario dentro de un OS de escritorio al redirigir la información de gráficos del servidor de gráficos del OS móvil al servidor de gráficos del OS de escritorio.
El OS móvil más ampliamente adoptado es Android de Google. Aunque Android se basa en Linux, incluye modificaciones en el módulo central y otras capas del OS para el ambiente móvil y procesadores móviles. En particular, aunque el módulo central de Linux se diseña para una arquitectura de CPU de PC (es decir, x86) , el módulo central de Android se modifica para procesadores móviles basados en ARM. Los controladores de dispositivos Android también se diseñan particularmente para dispositivos típicamente presentes en una arquitectura de hardware móvil, que incluye pantallas táctiles, conectividad móvil (GSM/EDGE, CDMA, WiFi, etc.), manejo de batería, GPS, acelerómetros, y módulos de cámara, entre otros dispositivos. Además, Android no tiene un Sistema X-Windows de origen ni soporta el conjunto completo de bibliotecas estándar de GNU, y esto hace difícil transferir aplicaciones de GNU/Linux existentes o bibliotecas a Android.
El sistema operativo iOS de Apple (ejecutado en el iPhone) y Windows Phone 7 de Microsoft se modifican de manera similar para el ambiente móvil y la arquitectura de hardware móvil. Por ejemplo, mientras el iOS se deriva del OS X de escritorio, OS X de Mac, las aplicaciones de OS X de Mac comunes no se ejecutan naturalmente en iOS. Específicamente, aplicaciones de iOS se desarrollan a través de un kit de desarrollador estándar ("SDK") para ejecutarse dentro del ambiente de tiempo de ejecución "Cocoa Touch" de iOS, el cual proporciona infraestructura de aplicación básica y soporte para características clave de iOS tales como entradas basadas en toque, notificación de inserción, y servicios de sistemas. Por lo tanto, las aplicaciones escritas para OS X de Mac no se ejecutan en iOS sin transferencia. Además, puede ser difícil transferir aplicaciones de OS X de Mac para iOS debido a diferencias entre las bibliotecas de usuario y/o capas de infraestructura de aplicación de los dos OS, y/o diferencias en los recursos del sistema del hardware móvil y de escritorio.
En una modalidad consistente con la arquitectura 300 de OS, un OS móvil de Android y un OS de Linux completo se ejecutan de manera independiente y concurrente en un módulo central de Android modificado. En esta modalidad, el OS de Android puede ser una distribución de Android modificado, mientras que el OS de Linux ("Hydroid") puede ser un OS de escritorio de Linux Debían modificado. Las FIGURAS 4-6 ilustran el OS 430 móvil de Android, el módulo central 520 de Android, y el OS 660 de Hydroid que puede emplearse en la arquitectura 300 de OS con mayor detalle, de acuerdo con varias modalidades.
Como se ilustra en la Figura 4, el OS 430 de Android incluye un conjunto de bibliotecas C/C++ en la capa 432 de bibliotecas que se accede a través de la capa 440 de infraestructura de aplicación. La capa 432 de bibliotecas incluye la biblioteca 439 C de sistema "bionic" que se desarrolló específicamente para Android para que sea más pequeño y más rápido que la biblioteca C de Linux "glibc". La capa 432 de bibliotecas también incluye la biblioteca 436 de comunicación entre procesos ("IPC") , que incluye las clases base para el mecanismo de I PC "Binder" del OS de Android. Binder se desarrolló específicamente para que Android permitiera comunicación entre procesos y servicios. Otras bibliotecas mostradas en la capa 432 de bibliotecas en la FIGURA 4 incluyen bibliotecas 435 de medios que soportan grabación y reproducción de formatos de medios, administrador 434 de superficie que administra el acceso al subsistema de pantalla y las capas de gráficos compuestas de múltiples aplicaciones, motores 438 de gráficos 2D y 3D, y el motor 437 de base' de datos de relación ligero. Otras bibliotecas que pueden incluirse en la capa 432 de bibliotecas pero no se representa en la Figura 4 incluye bibliotecas de presentación de mapas de bits y fuentes de vector, bibliotecas de utilidades, herramientas de navegación (es decir, WebKit, etc.), y/o bibliotecas de comunicación segura (es decir, SSL, etc . ) .
La capa 440 de infraestructura de aplicación del OS 430 de Android proporciona una plataforma de desarrollo que permite a los desarrolladores utilizar componentes de hardware de dispositivo, acceder a información de ubicación, ejecutar servicios en segundo plano, establecer alarmas, agregar notificaciones a la barra de estado, etc. La capa 440 de infraestructura también permite que las aplicaciones publiquen sus capacidades y hagan uso de las capacidades publicadas de otras aplicaciones. Los componentes de la capa 440 de infraestructura de aplicación del OS 430 móvil de Android incluyen administrador 441 de actividades, administrador 442 de recursos, administrador 443 de ventanas, administrador 444 de conexión, servicios de 445 de hardware y sistema, servicio 446 de monitor de escritorio, administrador 447 de varias pantallas, y servicio 448 de comunicación remota. Otros componentes que pueden incluirse en la capa 440 de infraestructura del OS móvil de Android incluyen un sistema de visualización, administrador de telefonía, administrador de paquetes, administrador de ubicación y/o administrador de notificaciones, entre otros administradores y servicios.
Las aplicaciones que se ejecutan en OS 430 de Android se ejecutan dentro de la máquina 431 virtual de Dalvik en el ambiente 433 de tiempo de ejecución de Android en la parte superior de la infraestructura de aplicación orientada a objetos de Android. La máquina 431 virtual de Dalvik es una máquina virtual basada en registros, y ejecuta un formato ejecutable compacto que se diseña para reducir el uso de memoria y los requisitos de procesamiento. Las aplicaciones que se ejecutan en OS 430 de Android incluyen pantalla 451 de inicio, aplicación 452 de correo electrónico, aplicación 453 de teléfono, aplicación 454 de explorador, y/u otra aplicaciones 455 ("Apps") .
El sistema de gráficos de OS de Android utiliza un modelo de cliente/servidor. Un administrador de superficie ("SurfaceFlinger") es el servidor de gráficos y las aplicaciones son los clientes. SurfaceFlinger mantiene una lista de ID de pantalla y se encuentra al tanto de la asignación de aplicaciones al ID de pantalla. En una modalidad, el dispositivo 110 de cómputo móvil tiene múltiples pantallas de visualización 116 de pantalla táctil. En esta modalidad, el ID de pantalla 0 se asocia con una de las pantallas de visualización 116 de pantalla táctil y el ID de pantalla 1 se asocia con la otra pantalla de visualización 116 de pantalla táctil. El ID de pantalla 2 se asocia con las pantallas de visualizacion 116 de pantalla táctil (es decir, la aplicación se despliega en ambas pantallas de visualizacion al mismo tiempo) . Los ID de pantalla mayores a 2 son pantallas virtuales, lo que significa que no se asocian con una pantalla de visualizacion físicamente presente en el hardware 112 del dispositivo de cómputo móvil.
La información de gráficos para aplicaciones de Android incluye ventanas, vistas y lienzos. Cada ventana, vista y/o lienzo se implementa con un objeto de superficie subyacente. Los objetos de superficie se guardan en memoria intermedia dos veces (memorias intermedias frontal y posterior) y se sincronizan a través de procesos para dibujo. El SurfaceFlinger mantiene todas las superficies en un grupo de memoria compartida que permite que se accedan a todos los procesos dentro de Android y los inserta sin operaciones de copiado costosas y sin utilizar un protocolo de escalado del lado del servidor, tal como X- indows . Las aplicaciones siempre escribe en la memoria intermedia posterior, mientras SurfaceFlinger lee de la memoria intermedia frontal. El SurfaceFlinger crea cada objeto de superficie, mantiene todos los objetos de superficie, y también mantiene una lista de objetos de superficie para cada aplicación. Cuando la aplicación termina de escribir en la memoria intermedia posterior, transfiere un evento a SurfaceFlinger, que pasa la memoria intermedia posterior a la frontal y pone en cola la tarea de presentar la información de superficie en la memoria intermedia de tramas.
El SurfaceFlinger monitorea todos los eventos de cambio de ventana. Cuando uno o más eventos de cambio de ventana ocurren, SurfaceFlinger presenta la información de superficie a la memoria intermedia de tramas para una o más pantallas de visualización. La presentación incluye componer las superficies, es decir, componer la trama de imagen final basándose en dimensiones, transparencia, orden Z, y visibilidad de las superficies. La presentación también puede incluir aceleración de hardware (por ejemplo, interfaz OpenGL 2D y/o 3D para hardware de procesamiento de gráficos) . El SurfaceFlinger descarga todos los objetos de superficie y presenta sus memorias intermedias en la memoria intermedia de tramas en su orden Z.
La FIGURA 5 ilustra el módulo central 520 de Android modificado, en mayor detalle de acuerdo con varias modalidades. El módulo central 520 de Android modificado incluye el controlador 521 de pantalla de visualización de pantalla táctil, controladores 522 de cámaras, controladores 523 de Bluetooth, asignador 524 de memoria compartida, controladores 525 de IPC, controladores 526 de USB, controladores 527 de WiFi, controladores 528 de dispositivo de E/S, y/o módulo 530 de administración de energía.
Controlador 528 de dispositivos de E/S incluye controladores de dispositivo para dispositivos de E/S externos, que incluyen dispositivos que pueden conectarse a dispositivos 110 de cómputo móvil a través del puerto 120. El módulo central 520 de Android modificado puede incluir otros controladores y bloques funcionales que incluyen un exterminador de memoria baja, depurador de módulo central, capacidad de registro y/u otros controladores de dispositivos de hardware.
La FIGURA 6 ilustra el OS 660 de Hydroid en mayor detalle, de acuerdo con varias modalidades. Hydroid es un OS completo de Linux que es capaz de ejecutar casi cualquier aplicación desarrollada para las distribuciones de Linux estándar. En particular, la capa 662 de bibliotecas de OS 660 de Hydroid incluye bibliotecas de Linux que soportan conexión a red, procesamiento de gráficos, administración de bases de datos y otras funciones de programas comunes. Por ejemplo, las bibliotecas 662 de usuario pueden incluir la biblioteca 664 C de Linux "glibc", bibliotecas 662 de gráficos de Linux (por ejemplo, GTK, OpenGL, etc.), bibliotecas 661 de utilidades de Linux, bibliotecas de bases de datos de Linux, y/u otras bibliotecas de usuario de Linux. Aplicaciones ejecutadas en Hydroid dentro de un ambiente de gráficos de Linux X- indows que utiliza X-Servidor 674, administrador 673 de ventanas, y/o ambiente 672 de escritorio. Aplicaciones ilustradas incluyen procesador 681 de palabras, aplicación 682 de correo electrónico, aplicación 683 de hoja de cálculo, explorador 684, y otras aplicaciones 685.
El sistema de gráficos de OS de Linux se basa en el sistema de gráficos X-Windows (o "XII") . X-Windows es una infraestructura de gráficos conectada a red independiente de plataforma. X-Windows utiliza un modelo de cliente/servidor donde el X-servidor es el servidor de gráficos y aplicaciones son los clientes. El X-servidor controla el hardware de entrada/salida asociado con el OS de Linux tal como pantallas, pantallas de visualización de pantalla táctil, teclados, dispositivos de señalamiento, etc. En este respecto, X-Windows proporciona una arquitectura de gráficos de escalado del lado de servidor, es decir, el X-servidor mantiene el contenido para escalables que incluyen ventanas y mapas de bits. X-clientes se comunica con el X-servidor al intercambiar paquetes de' datos que describen operaciones de escalado sobre un canal de comunicación. X-clientes accede al protocolo de comunicación X a través de una biblioteca de rutinas estándar (la "Xlib") . Por ejemplo, X-cliente puede enviar una respuesta al X-servidor para escalar un rectángulo en la ventana de cliente. El X-servidor envía eventos de entrada al X-clientes, por ejemplo, teclado o entrada de dispositivo de señalamiento, y/o movimiento de ventana o redimensionamiento . Eventos de entrada son con respecto a las ventanas de cliente. Por ejemplo, si el usuario hace clic cuando el puntero se encuentra entre una ventana, el X-servidor envía un paquete que incluye el evento de entrada en el X-cliente asociado con la ventana que incluye la acción y colocación del evento con respecto a la ventana.
Debido a las diferencias en las infraestructuras del sistema operativo, sistemas de gráficos, y/o bibliotecas, aplicaciones escritas para Android generalmente no se ejecutan en OS 660 de Hydroid y aplicaciones escritas para distribuciones de Linux estándar generalmente no se ejecutan en OS 430 de Android. En este respecto, aplicaciones para OS 430 de Android y OS 660 de Hydroid no son compatibles con código de bytes, lo que significa que programas compilados y ejecutables para uno no se ejecutan para el otro.
En una modalidad, OS 660 de Hydroid incluye componentes de una infraestructura de comunicación de ambiente cruzado que facilita comunicación con el OS 430 de Android a través del módulo central 520 compartido. Estos componentes incluyen biblioteca 663 de IPC que incluye las clases base para el mecanismo de IPC Binder del OS de Android y servicio 671 de comunicaciones remotas.
En una modalidad, el OS 660 de Hydroid se ejecuta dentro de un ambiente de ejecución secundario con chrooted (creado con el comando ' chroot ' ) creado dentro del ambiente de raíz de Android. Procesos y aplicaciones dentro del OS 660 de Hydroid se ejecutan dentro del ambiente de ejecución secundario de manera que el directorio de raíz de origen visto por estos procesos y aplicaciones es el directorio de raíz del ambiente de ejecución secundario. De esta manera, el OS 660 de Hydroid puede ejecutar programas escritos para distribuciones de Linux estándar sin modificación debido a que las Bibliotecas 662 de usuario de Linux se encuentran disponibles para procesos que se ejecutan en OS 660 de Hydroid en el ambiente de ejecución secundario con chrooted.
Con referencia nuevamente a la FIGURA 3, el OS 130 móvil y el OS 160 de escritorio se encuentran en ejecución concurrente activa en el módulo central 320 compartido en un dispositivo móvil. El OS 130 móvil y el OS 160 de escritorio pueden ser incompatibles con respecto a las bibliotecas de usuario, sistemas de gráficos, y/o infraestructuras de aplicaciones. Por lo tanto, el OS 130 móvil y el OS 160 de escritorio tienen diferentes conjuntos de* aplicaciones disponibles, lo que significa que por lo menos algunas aplicaciones disponibles en OS 130 móvil no se encuentran disponibles en el OS 160 de escritorio y viceversa. Por consiguiente, el OS 130 móvil y el OS 160 de escritorio de la arquitectura 300 de OS proporcionan experiencias de usuario separadas a través de diferentes conjuntos de aplicaciones que se pueden acceder a través de espacios de interacción de usuario separados. El usuario puede acceder a las aplicaciones disponibles en (es decir, compiladas para y cargadas dentro del ambiente de ejecución de) el OS 130 móvil a través del espacio de interacción de usuario asociado con el OS 130 móvil, y las aplicaciones disponibles en el OS 160 de escritorio a través del espacio de interacción de usuario asociado con el OS 160 de escritorio.
Modalidades de la presente invención extienden la funcionalidad de la arquitectura 300 de OS para proporcionar una experiencia de cómputo más continua en un ambiente de cómputo de varios OS. Modalidades incluyen presentación de ambiente cruzado de aplicaciones y/o el espacio de interacción de usuario de un primer sistema operativo dentro de un espacio de interacción de usuario de un segundo sistema operativo, aun cuando los ambientes de gráficos del primer y segundo sistemas operativos no sean compatibles. Modalidades además incluyen soporte de interacción de usuario de aplicaciones de ambiente cruzado, y acceder a aplicaciones del primer sistema operativo desde el espacio de interacción de usuario del segundo sistema operativo. Esta funcionalidad permite que, por ejemplo, aplicaciones de OS móvil, que se ejecutan en OS 130 móvil, se desplieguen e interactúen a través de un espacio de interacción de usuario asociado con el OS 160 de escritorio. Por ejemplo, aunque un usuario interactúe con el OS 160 de escritorio a través de un espacio de interacción de usuario asociado con el OS 160 de escritorio, el usuario puede desear tener acceso a una aplicación particular del OS 130 móvil que no se encuentra disponible para (es decir, que no compila para y no se ejecuta en) el OS 160 de escritorio. Al utilizar varias modalidades descritas a continuación, el usuario puede acceder, desplegar e interactuar con una aplicación compilada para y que se ejecuta en el OS 130 móvil a través del espacio de interacción de usuario asociado con el OS 160 de escritorio. De manera notable, las modalidades proporcionan soporte de interacción de ambiente cruzado con cualquier aplicación del OS móvil, lo que significa que las aplicaciones de OS móvil no necesitan modificarse para incluir soporte de ambiente cruzado especifico para utilizar las modalidades siguientes.
Para proporcionar soporte de interacción de usuario de ambiente cruzado continuo para una aplicación y/o el espacio de interacción de usuario de un primer OS (por ejemplo, OS 130 móvil) del interior de un espacio de interacción de usuario de un Segundo OS (por ejemplo, OS 160 de escritorio) , puede ser deseable que datos de gráficos de aplicación y/o el espacio de interacción de usuario (es decir, contexto de gráficos o pantalla activa) se presenten para visualización en el espacio de interacción de usuario del segundo OS en tiempo real. La presentación en tiempo real (o instantánea) , en este contexto, significa que los datos de gráficos de la aplicación se presentan en el espacio de interacción de usuario del segundo OS lo suficientemente rápido para que el usuario pueda interactuar con la aplicación sin una reducción notable o sustancial en el rendimiento de aplicación debido a los retardos asociados con transferir la información de gráficos. En este respecto, las técnicas para presentación de ambiente cruzado en tiempo real (o instantáneo) , como se describe en la presente, proporcionan una transferencia rápida para información de gráficos, por ejemplo, con un número limitado de retardos de trama u otros retardos asociados con copiar o transferir la información de gráficos desde el primer OS al segundo OS. Sin embargo, no significa que la transferencia de gráficos no tome cierto tiempo, y las técnicas de presentación de ambiente cruzado descritas en la presente puedan considerarse instantáneas o en tiempo real, aunque un periodo de tiempo finito pase antes de que la información de gráficos se despliegue en el espacio de interacción de usuario del segundo OS.
Para lograr una presentación de ambiente cruzado de aplicaciones, una cantidad potencialmente grande de datos de gráficos puede pasarse desde la aplicación que se ejecuta en el primer sistema operativo hasta un sistema de gráficos del segundo sistema operativo. Mecanismos existentes no son capaces de transferir los datos de gráficos requeridos sin afectar potencialmente la actualización de visualizacion o la proporción de tramas. Por ejemplo, transferir los datos de gráficos directamente puede no ser práctico dentro de las restricciones de un ambiente de cómputo móvil. Técnicas de compresión podrían utilizarse para reducir la cantidad total de datos que se transfiere, pero a costa de requisitos de procesamiento incrementados para comprimir y descomprimir la información. Sistemas de tipo escritorio remotos podrían utilizarse para pasar gráficos de vector o información de actualización de gráficos, sin embargo, éstas típicamente son lentas cuando se transfieren grandes cantidades de datos de gráficos o para cambiar rápidamente contenido de gráficos.
La FIGURA 7 ilustra una configuración 300a de arquitectura de OS, la cual puede emplearse para proporcionar presentación de ambiente cruzado de una aplicación y/o el espacio de interacción de usuario de un primer OS dentro de un espacio de interacción de usuario de un segundo OS, donde el primer y segundo OS se ejecutan de manera concurrente en un módulo central compartido y se asocian con espacios de interacción de usuario separados que incluyen dispositivos de visualizacion separados, de acuerdo con varias modalidades. Los componentes de la configuración 300a de arquitectura de OS permiten que aplicaciones que se ejecutan en el OS 130 móvil y/o el contexto de gráficos del OS 130 móvil se presenten dentro del espacio de interacción de usuario de OS 160 de escritorio, donde el OS 130 y el OS 160 de escritorio se ejecutan de manera concurrente en el módulo central 320 compartido. En varias modalidades, se despliega una aplicación en una ventana de consola en el espacio de interacción de usuario de OS 160 de escritorio a través de la aplicación 782 de consola del OS 160 de escritorio. En una implementación, la aplicación 782 de consola es una aplicación tipo X-Windows que se despliega dentro del espacio de interacción de usuario de OS 160 de escritorio a través de un sistema de gráficos tipo X-Windows del OS 160 de escritorio .
En una configuración 300a de arquitectura de OS, el OS 130 móvil incluye el servidor 734 de gráficos que asigna y maneja información de superficie (por ejemplo, superficies 726, 727, y 728) para aplicaciones (por ejemplo, aplicación 752 y 754) del OS 130 móvil. En una modalidad, el servidor 734 de gráficos asigna memoria para superficies de gráficos utilizando memoria compartida anónima (es decir, llamados bloques de memoria compartida entre procesos que tienen permiso de liberar el módulo central) . El servidor 734 de gráficos también asigna y rastrea visualizaciones del OS 130 móvil, incluyendo visualizaciones que se integran dentro del hardware 112 de dispositivo de cómputo móvil (es decir, visualizaciones locales) y visualizaciones denominadas virtuales a través de las cuales pueden desplegarse aplicaciones del OS 130 móvil de manera remota (es decir, dentro de un espacio de interacción de usuario de otro OS) . El OS 130 móvil también puede incluir un sistema de ventanas para desplegar múltiples aplicaciones al mismo tiempo en una pantalla de visualización asociada con el OS 130 móvil. En una modalidad, el OS 130 móvil incluye un servicio que proporciona un canal de comunicación remota para acceder a componentes del OS 130 móvil desde el OS 160 de escritorio.
La configuración 300a de arquitectura de OS incluye una primera aplicación 752 que se ejecuta en el OS 130 móvil y se despliega dentro de un primer espacio de interacción de usuario asociado con el OS 130 móvil. La configuración 300a de arquitectura de OS incluye una segunda aplicación 754 que también se ejecuta en el OS 130 móvil, pero se despliega dentro de un segundo espacio de interacción de usuario asociado con el OS 160 de escritorio a través de presentación de ambiente cruzado de acuerdo con modalidades descritas a continuación. En una modalidad, la aplicación 754 se despliega dentro de una ventana de consola del segundo espacio de interacción de usuario a través de la aplicación 782 de consola que se ejecuta en el OS 160 de escritorio.
Generalmente, aplicaciones del OS 130 móvil ejemplifican vistas a través de las cuales el usuario interactúa con la aplicación. Por ejemplo, una aplicación puede tener una sola vista que forma la ventana de aplicación. Dentro de vistas, las aplicaciones ejemplifican objetos de escalado para áreas especificas de la interfaz de aplicación. Los objetos de escalado pueden denominarse lienzos o capas de dibujo y son los objetos a través de los cuales la aplicación escala la información de gráficos. Cuando una aplicación ejemplifica un lienzo o capa, el servidor 734 de gráficos asigna memoria para la información de superficie asociada con el lienzo o capa y regresa el objeto de escalado a la aplicación, o la aplicación entonces de utiliza para escalar información de gráficos para las superficies del lienzo o capa. El servidor 734 de gráficos entonces monitorea la información de superficie y presenta la información de superficie en la memoria intermedia de tramas (por ejemplo, memoria intermedia 716 de tramas) cuando se actualiza la información de superficie. Típicamente, el usuario también interactúa con la aplicación a través de los objetos de vista. Los objetos de vista incluyen oyentes de eventos que se llaman por la Cola 136 de entrada de OS móvil cuando se realizan acciones por el usuario en el objeto de vista .
Como se ilustra en la arquitectura 300a de OS, las superficies 726, 727, y/o 728 se asignan por el servidor 734 de gráficos en la memoria 724 compartida. La memoria 724 compartida se maneja por el módulo central 320 compartido y se puede acceder por todos los procesos que se ejecutan en el OS 130 móvil y el OS 160 de escritorio. Como se describe en lo anterior, la memoria 724 compartida puede llamarse memoria compartida. Aunque la memoria llamada compartida se puede acceder por todos los procesos que se ejecutan en el módulo central 320 compartido, otros procesos no pueden acceder a regiones de la memoria llamada compartida por nombre. Por consiguiente, un descriptor de archivos para regiones de la memoria llamada compartida debe pasarse a través de un mecanismo de comunicación entre procesos para pasar una referencia a la memoria llamada compartida a través de limites de proceso. El módulo central 320 compartido también incluye el controlador 725 de IPC, el cual permite que procesos en el OS 130 móvil y el OS 160 de escritorio se comuniquen entre si a través de limites de proceso. El controlador 725 de IPC por ejemplo, puede ser un controlador de conexión de dominio de Unix, controlador Binder de Android, y/o controlador de conexión de red.
El OS 160 de escritorio de la configuración 300a de arquitectura de OS incluye aplicación 782 de consola y sistema 774 de ventanas. La aplicación 782 de consola se compila para y se ejecuta en el OS 160 de escritorio, y se despliega dentro de una ventana de consola en el espacio de interacción de usuario asociado con el OS 160 de escritorio. El sistema 774 de ventanas puede incluir un administrador de ventanas, servidor de gráficos, y/o interfaz de dispositivo de gráficos que proporciona la base para representar objetos' de gráficos y transmitirlos a los dispositivos de visualización a través de memoria intermedia 718 de tramas de OS de escritorio. Por ejemplo, el sistema 774 de ventanas puede desplegar la aplicación 782 de consola dentro del espacio de interacción de usuario de OS 160 de escritorio a través de la memoria intermedia 718 de tramas de OS de escritorio. El sistema 774 de ventanas también proporciona eventos de entrada del ambiente de usuario de OS 160 de escritorio asociado con la aplicación 782 de consola a la aplicación 782 de consola. Por ejemplo, el sistema 774 de ventanas puede proporcionar ubicación de dispositivo de señalamiento o información de gestos del espacio de interacción de usuario asociado con el OS 160 de escritorio a la aplicación 782 de consola.
En la FIGURA 7, bloques de memoria que incluyen memoria 724 compartida, memoria intermedia 716 de tramas de OS móvil, y la memoria intermedia 718 de tramas de OS de escritorio se muestra como ubicada dentro del módulo central 320 compartido para facilidad de ilustración. Sin embargo, estos bloques de memoria físicamente se ubican en elementos de almacenamiento de memoria tangibles del dispositivo 110 de cómputo móvil y se manejan por el módulo central 320 compartido. Por ejemplo, estos bloques de memoria pueden ubicarse en la RAM en el procesador 114, y/o en la RAM del dispositivo 206 de memoria del hardware 112 del dispositivo de cómputo móvil ilustrado en la FIGURA 2.
La configuración 300a de arquitectura de OS proporciona soporte para presentación de ambiente cruzado de aplicaciones de un primer sistema operativo que se ejecuta en un módulo central compartido dentro de un espacio de interacción de usuario asociado con un segundo sistema operativo, donde el primer y segundo sistemas operativos se ejecutan de manera concurrente en el módulo central compartido. La configuración 300a de arquitectura de OS puede emplearse para proporcionar soporte para presentación de ambiente cruzado en un ambiente de cómputo que proporciona múltiples experiencias de cómputo de usuario a través de múltiples espacios de interacción de usuario. Por ejemplo, la configuración 300a de arquitectura de OS puede utilizarse en el ambiente 100 de cómputo como se ilustra en la FIGURA 1.
La FIGURA 8 ilustra el ambiente 800 de cómputo, de acuerdo con varias modalidades. El ambiente 800 de cómputo tiene un primer ambiente de usuario que incluye pantallas de visualización 116 de pantalla táctil y otros dispositivos 118 de E/S del hardware 112 de dispositivo de móvil. Este ambiente de usuario presenta un primer espacio de interacción de usuario a través del cual el usuario interactúa con el OS 130 móvil. Un segundo ambiente de usuario del ambiente 800 de cómputo incluye el monitor 844 de visualización, teclado 846, y/o dispositivo 848 de señalamiento. El ambiente 840 de usuario puede conectarse al dispositivo 110 de cómputo móvil a través del conector 841 de conexión y el cable 843 de conexión. El conector 841 de conexión y el cable 843 de conexión pueden incluir un puerto que se interconecta a través de la interfaz 122 de conexión al puerto 120 del dispositivo 110 de cómputo móvil como se ilustra en la FIGURA 1. En este respecto, el ambiente 840 de usuario proporciona un ambiente de terminal secundario conectado al dispositivo 110 de cómputo móvil. En el ambiente 800 de cómputo, el OS 160 de escritorio puede asociarse con el ambiente 840 de terminal secundario conectado de modo que el usuario pueda interactuar con el OS 160 de escritorio a través del espacio de interacción de usuario proporcionado por el ambiente 840 de terminal secundario. Aunque el ambiente 840 de terminal secundario se ilustra como ambiente de cómputo tipo escritorio típico, el OS 160 de escritorio puede presentar un segundo espacio de interacción de usuario a través de otros tipos de ambientes de cómputo, que incluyen tipo laptop, de tableta, y/u otros tipos de ambientes de cómputo.
La configuración 300a de arquitectura de OS puede utilizarse dentro de un ambiente 800 de cómputo para proporcionar presentación de ambiente cruzado de aplicaciones que se ejecutan en un primer OS (es decir, OS móvil) y desplegarse dentro de un ambiente de usuario de un segundo OS (es decir, ambiente 840 de usuario asociado con el OS 160 de escritorio) . Por ejemplo, la aplicación 754, que se ejecuta en el OS 130 móvil, puede desplegarse dentro de la ventana 882 de consola en el espacio 880 de interacción de usuario de OS 160 de escritorio. Otras ventanas dentro del espacio 880 de interacción de usuario, que incluyen la ventana 884 y 886, pueden ser ventanas de otras aplicaciones que se ejecutan en el OS 160 de escritorio. Para el usuario, el ambiente 800 de cómputo proporciona una experiencia de cómputo continua para la aplicación 754 debido a que la aplicación 754 puede utilizarse dentro del espacio de interacción de usuario de OS 160 de escritorio como si se ejecutara en el OS 160 de escritorio, mientras de hecho la aplicación 754 se ejecuta en el OS 130 móvil.
La FIGURA 8 ilustra un ambiente 840 de terminal secundario tipo escritorio. En este caso, el usuario puede interactuar con una aplicación y/o espacio de interacción de usuario de OS móvil a través de la ventana 882 de consola utilizando el teclado 846 y el ratón 848 (es decir, una GUI basada en dispositivo de señalamiento primario) del ambiente 840 de terminal secundario. Sin embargo, la presentación de ambiente cruzado de una aplicación y/o el duplicado de espacio de interacción de usuario de OS móvil puede utilizarse con otros ambientes de terminal secundarios. Por ejemplo, el OS 160 de escritorio podría asociarse con un ambiente de terminal secundario tipo tableta que incluye una pantalla de visualización de pantalla táctil. En este caso, el usuario puede interactuar con una aplicación de ambiente cruzado o espacio de interacción de usuario duplicado del OS 130 móvil de la misma forma (es decir, una GUI basada en gestos principal) en la cual el usuario típicamente interactúa con el espacio de interacción de usuario de OS 130 móvil .
Como se discute en lo anterior, modalidades de la invención se dirigen a proporcionar soporte de interfaz de usuario concurrente a través de aplicaciones de ambiente cruzado y/o espacio de interacción de usuario duplicado en un ambiente de cómputo de múltiples OS. En un ejemplo, el soporte de interfaz de usuario se proporciona para que aplicaciones de ambiente cruzado permitan que una aplicación, que se ejecuta en un primer OS, se despliegue e interactúe a través de un espacio de interacción de usuario de un segundo OS, sustancialmente como si se ejecutara naturalmente en el segundo sistema operativo.
Modalidades de Contexto de Presentación No Extendido Algunas modalidades manejan soporte de interfaz de usuario concurrente a través de múltiples OS sin extender el contexto de visualización de gráficos del sistema operativo. El primer OS (por ejemplo, el OS móvil, Android) se configura típicamente para definir un solo espacio de interacción de usuario activo. El espacio de interacción de usuario incluye una pantalla activa (por ejemplo, con características asociadas, como resolución) y uno o más dispositivos de entrada activa para permitir la interacción de usuario con los elementos desplegados en la pantalla activa. Por consiguiente, el primer OS establece un contexto de presentación a través del cual puede presentar información de superficie para aplicaciones que se ejecutan para visualizacion en la pantalla activa.
Como se describe en lo anterior, sin embargo, técnicas novedosas se describen en la presente para engañar efectivamente el primer OS para manejar de manera concurrente múltiples espacios de interacción de usuario. Además, las técnicas permiten que múltiples espacios de interacción de usuario se asocien con diferentes sistemas operativos (por ejemplo, incompatibles) en múltiples ambientes de cómputo. Algunas modalidades involucran técnicas para manejar las salidas de visualizacion a través de presentación remota de ambiente cruzado. Otras modalidades involucran técnicas para manejar la interacción de usuario en estos contextos.
En presentación remota de ambiente cruzado, gráficos de aplicación para una aplicación que se ejecuta en el primer OS y se despliega dentro de un ambiente de cómputo asociado con un segundo OS se presentan al interior del segundo OS. En una modalidad, una aplicación de consola, que se ejecuta en el segundo OS, accede a la información de superficie para la aplicación desde la memoria compartida y presenta la aplicación dentro de una ventana de consola del ambiente de cómputo asociado con el segundo OS.
Suponer que una aplicación de calendario y una aplicación de procesamiento de palabras ambas se compilan y se ejecutan concurrentemente en un primer OS (por ejemplo, OS 130 móvil) en un dispositivo móvil. Un segundo OS (por ejemplo, un OS no móvil, similar a OS 160 de escritorio) se ejecuta concurrentemente en el dispositivo móvil utilizando un módulo central compartido. El usuario ha conectado el dispositivo móvil con un segundo ambiente de cómputo de escritorio, y desea interactuar con la aplicación de procesamiento de palabras a través del ambiente de cómputo de escritorio. Es deseable manejar el espacio de interacción de usuario del ambiente de cómputo de escritorio utilizando el segundo OS del ambiente de cómputo móvil (es decir, el dispositivo móvil) en una forma que sea transparente para el usuario .
La FIGURA 9 ilustra aspectos de una presentación remota de ambiente cruzado, de acuerdo con varias modalidades. En el diagrama 900 de presentación de aplicación ilustrado en la FIGURA 9, la primera aplicación 910 (por ejemplo, aplicación de calendario) calcula actualizaciones para una primera superficie 912 dentro del primer OS. La primera superficie 912 se almacena en una primera ubicación de memoria en un espacio de memoria compartida para el primer sistema operativo. Por ejemplo, la primera ubicación de memoria puede ser una región de memoria llamada compartida. La primera aplicación 910 actualiza la memoria intermedia 914 posterior de la primera superficie 912. De manera similar, la segunda aplicación 930 (por ejemplo, aplicación de procesamiento de palabras) calcula actualizaciones para una segunda superficie 932 utilizando el primer OS. La segunda superficie 932 se almacena en una segunda ubicación de memoria en el espacio de memoria compartida (por ejemplo, una segunda región of memoria llamada compartida) por el primer OS.
El primer OS determina cuándo iniciar una secuencia de presentación. Por ejemplo, el primer OS puede iniciar una secuencia de presentación cuando la información de superficie para las superficies 912 y/o 932 ha cambiado. El primer OS puede realizar un bucle sencillo sobre toda las superficies, que incluyen la primera superficie 912 y la segunda superficie 932, determinando si la información de superficie asociada con aplicaciones particulares ha cambiado. En la secuencia de presentación, si la información de superficie para la superficie 912 ha cambiado, el primer OS transfiere la memoria intermedia 916 frontal y la memoria intermedia 914 posterior, de modo que la información de superficie que se encontraba en la memoria intermedia 914 posterior ahora se encuentra en la memoria intermedia 916 frontal. El primer sistema operativo presenta la primera superficie 912 en una tercera ubicación 920 de memoria para crear la imagen 918 final que se despliega dentro un primer espacio de interacción de usuario asociado con el primer OS.
Si la información de superficie para la segunda superficie 932 ha cambiado, el primer OS notifica al segundo OS que la información de superficie para la segunda superficie 932 ha cambiado. Específicamente, el primer OS envía una notificación de escalado a una aplicación de consola del segundo OS que indica que la superficie 932 se ha actualizado a través de un canal de comunicación entre procesos. La notificación de escalado puede incluir un descriptor de archivos en la imagen 936 frontal, y/u otras características del espacio de memoria compartida para la imagen 936 frontal que incluye tamaño de memoria intermedia, orden de capas, etc. La aplicación de consola mapea el descriptor de archivos en su espacio de proceso para obtener una referencia a la segunda ubicación de memoria. Por referencia a la segunda ubicación de memoria, la aplicación de consola del segundo OS lee directamente la información de superficie de la memoria intermedia 936 de imágenes frontal y presenta la información de superficie para la imagen 936 frontal de la segunda superficie 932 en una ventana 940 de consola dentro de un segundo espacio de interacción de usuario asociado con el segundo OS. De esta manera, la aplicación de consola puede presentar la segunda aplicación 930 en la ventana 940 de consola en tiempo real sin copiar una trama de gráficos o información de superficie a través de procesos. De hecho, la aplicación de consola lee la información de superficie directamente al mapear la memoria compartida de la segunda superficie 932 en su propio espacio de proceso duplicando el descriptor de archivos pasado a través de comunicación entre procesos.
La FIGURA 10 muestra un diagrama 1000 de flujo de un método ilustrativo para presentación remota de ambiente cruzado en un contexto de presentación no extendido, de acuerdo con varias modalidades. Las modalidades mantienen la visualización de gráficos de aplicación para una primera aplicación (por ejemplo, la aplicación de calendario) y una segunda aplicación (por ejemplo, la aplicación de procesamiento de palabras) , ambas compiladas para y en ejecución concurrente activa dentro de un primer sistema operativo.
El método 1000 comienza en el bloque 1004 al calcular actualizaciones en las superficies de la primera aplicación utilizando el primer sistema operativo. Calcular actualizaciones en las superficies puede involucrar utilizar datos de aplicación para determinar qué superficies han cambiado y en qué forma. Por ejemplo, la interacción de usuario puede haber provocado que ciertas superficies cambien de posición, orden (por ejemplo, una capa puede encontrarse parcialmente en la parte frontal de otra capa, completamente oculta por otra capa, etc.), tamaño, color, textura, etc.
En el bloque 1008, estas superficies actualizadas de la primera aplicación se presentan utilizando el primer sistema operativo para generar una primera trama de gráficos en una primera ubicación de memoria. Por ejemplo, un motor de presentación del primer OS previamente estableció un contexto de presentación asociado con una pantalla. Una trama de gráficos entonces puede presentarse al interactuar a través de la información de superficie actualizada para escalar efectivamente una imagen completa o parcial de porciones visibles de superficies desde la primera aplicación de acuerdo con características (por ejemplo, resolución) de la pantalla asociada con el contexto de presentación. Esta trama de gráficos se presenta en una primera ubicación de memoria. La ubicación de memoria puede ser la memoria intermedia de tramas, memoria compartida, o cualquier otra ubicación de memoria útil.
En algunas modalidades, en el bloque 1012, la primera trama de gráficos presentada se despliega desde la primera ubicación de memoria en una pantalla de un primer ambiente de cómputo asociado con el primer sistema operativo. Por ejemplo, la primera trama de gráficos se presenta en una porción de memoria intermedia posterior de la memoria intermedia de tramas del dispositivo móvil. De manera subsiguiente, la memoria intermedia de tramas se conmuta (es decir, la porción de memoria intermedia posterior se vuelve la porción de memoria intermedia frontal) y la porción de memoria intermedia no frontal de la memoria intermedia de tramas se despliega en la pantalla del dispositivo móvil.
En el bloque 1016, actualizaciones se calculan en las superficies de la segunda aplicación utilizando el primer sistema operativo. Esto puede realizarse sustancial e idénticamente al cálculo del bloque 1004 para superficies de la primera aplicación. A diferencia de los datos de superficie actualizados de la primera aplicación, sin embargo, la información de superficie actualizada de la segunda aplicación no se presenta por el primer OS. De hecho, en el bloque 1020, las superficies actualizadas de la segunda aplicación se almacenan en una segunda ubicación de memoria. La segunda ubicación de memoria es una ubicación de memoria compartida que se puede acceder por el primer y segundo OS, los cuales se ejecutan concurrentemente en el módulo central compartido del dispositivo móvil.
En el bloque 1024, las superficies actualizadas de la segunda aplicación se presentan utilizando una aplicación de consola del segundo sistema operativo para generar una segunda trama de gráficos en una tercera ubicación de memoria. Por ejemplo, la aplicación 782 de consola de la FIGURA 7 puede presentar superficies actualizadas de la aplicación 754 en la memoria intermedia de tramas del segundo OS (por ejemplo, asociado con la pantalla del segundo ambiente de cómputo) . En algunas modalidades, en el bloque 1028, la segunda trama de gráficos se despliega desde la tercera ubicación de memoria hasta una pantalla de un segundo ambiente de cómputo asociado con el segundo sistema operativo. Por ejemplo, el controlador de pantalla de la pantalla de ambiente de cómputo de escritorio accede a la memoria intermedia de tramas para acceder y desplegar la segunda trama de gráficos. En ciertas implementaciones, la aplicación de consola también mantiene un espacio de interacción de consola, y la segunda trama de gráficos se presenta en el espacio de interacción de consola. Por ejemplo, la aplicación de consola presenta una o más ventanas en la pantalla de escritorio, y los gráficos de la segunda aplicación se despliegan en una de esas ventanas.
En algunas modalidades, el método 1000 itera a través de los bloques para mantener de manera concurrente los ambientes de gráficos para ambas aplicaciones. Por ejemplo, el OS móvil calcula actualizaciones en los gráficos de una primera aplicación y presenta esas actualizaciones en la memoria intermedia de tramas móvil; después, el OS móvil calcula actualizaciones en los gráficos de la segunda aplicación y almacena esas actualizaciones en la memoria compartida, de donde la aplicación de consola del OS de escritorio presenta esas actualizaciones en la memoria intermedia de tramas de escritorio; después, el método 1000 se repite con el siguiente conjunto de actualizaciones. De manera notable, algunas implementaciones realizan ciertas etapas fuera de orden y/o en paralelo. Por ejemplo, puede ser posible calcular actualizaciones en las superficies de la primera y segunda aplicaciones sustancialmente al mismo tiempo (es decir, realizar bloques 1004 y 1016 sustancialmente en paralelo) , a través de sólo una porción de esas superficies actualizadas se presentará localmente (por ejemplo, en el bloque 1008) y otra porción de esas superficies actualizadas se almacenará para presentación remota (por ejemplo, en los bloques 1020 y 1024).
En una modalidad, un OS móvil de Android y un OS de Linux completo (por ejemplo, Hydroid) se ejecutan concurrentemente en un módulo central compartido en un dispositivo móvil. Cuando se lanza una aplicación de Android desde el OS 660 de Hydroid, una aplicación de consola lanza un OS 660 de Hydroid y solicita que el OS 430 de Android lance la aplicación de Android y envié notificaciones de escalado para la aplicación de Android a la aplicación de consola. El OS 430 de Android lanza la aplicación de Android, asocia la aplicación con un ID de pantalla virtual y registra la aplicación de consola para recibir notificaciones de escalado para la aplicación. Por ejemplo, el Servidor de Gráficos de Android (es decir, SurfaceFlinger) puede asignar un ID de pantalla virtual no utilizado y asociar la aplicación con el ID de pantalla virtual a través de una lista de objetos de aplicación. SurfaceFlinger asigna memoria para información de superficie de la aplicación de Android en una memoria compartida y registra la aplicación de consola para recibir notificaciones de escalado para la aplicación de Android.
Cuando SurfaceFlinger determina que la información de superficie se actualiza, SurfaceFlinger envía una notificación de escalado a la aplicación de consola a través de un canal de comunicación entre procesos. Por ejemplo, SurfaceFlinger puede enviar la notificación de escalado a la aplicación de consola a través de una conexión de dominio Unix, interfaz de Binder y/o conexión de red. La notificación de escalado incluye un descriptor de archivos en la información de superficie. El descriptor de archivos puede generarse por SurfaceFlinger basándose en un espacio de nombre para una región de memoria llamada compartida de la superficie. La notificación de escalado también puede incluir formato de datos, tamaño de memoria intermedia, e información de posición de superficie. La aplicación de consola mapea el descriptor de archivos en su espacio de proceso y lee de la ubicación de memoria compartida a través del descriptor de archivos mapeado. La aplicación de consola entonces presenta la trama de gráficos para la aplicación directamente de la información de superficie. La trama de gráficos presentada entonces se despliega por el sistema de gráficos de OS de escritorio (es decir, a través del sistema de gráficos X-Windows de OS 660 de Hydroid) .
La FIGURA 11 ilustra un flujo 1100 de proceso de registro y escalado para presentación remota de ambiente cruzado en mayor detalle, de acuerdo con varias modalidades. Inicialmente, la aplicación 1102 de consola, que se ejecuta en OS 660 de Hydroid, solicita a través del canal 525 de IPC del módulo central 520 compartido en la etapa 1106 que una aplicación de Android se inicie y despliegue dentro de un ambiente de usuario de OS 660 de Hydroid, o se mueva de un ambiente de usuario de OS 430 de Android a un ambiente de usuario de OS 660 de Hydroid. Android solicita de SurfaceFlinger 434 un ID de pantalla virtual para la aplicación, inicia la aplicación, y establece los parámetros para la pantalla virtual en las etapas 1108, 1110, y 1112. En la 1114, Android regresa el ID de pantalla a la aplicación de consola a través del canal 525 de IPC. En la etapa 1116, la aplicación solicita una nueva superficie, cuyo SurfaceFlinger 434 crea al crear un caso de superficie clase 1104 en la etapa 1118.
La aplicación 1102 de consola ejemplifica un objeto presentador en la etapa 1120, el cual presenta la Información de superficie de Android a través del Sistema X-Windows de OS 660 de Hydroid. En la etapa 1122, la aplicación 1102 de consola registra una interfaz remota del objeto 1124 presentador con SurfaceFlinger 434 para recibir notificaciones de escalado para información de superficie para aplicación de Android. En una modalidad, la interfaz remota del objeto presentador incluye métodos de escalado () y borrado ( ) que pueden llamarse a través del canal 525 de IPC. En las etapas 1126 y 1128, SurfaceFlinger conecta el Objeto de IPC a la superficie de manera que a la aplicación 1102 de consola se le notificará a través de la interfaz remota cuando la información de superficie se ha actualizado.
Las tapas 1130 y 1132 son parte del bucle de presentación del flujo de proceso 1100. En el bucle de presentación, SurfaceFlinger notifica a la aplicación 1102 de consola que la información de superficie se actualiza y pasa a un descriptor de archivos la información de superficie a través del canal 525 de IPC. Por ejemplo, un método de escalado del presentador de aplicación de consola puede llamarse y pasar el descriptor de archivos a la superficie. La aplicación 1102 de consola mapea el descriptor de archivos a su espacio de proceso y accede a la ubicación de memoria compartida presentada para leer la información de superficie y presentar la trama de gráficos que se despliega en una pantalla de un segundo ambiente de cómputo asociado con el OS 660 de Hydroid.
La FIGURA 12 muestra un diagrama 1200 de flujo de otro método ilustrativo para presentación de ambiente cruzado en un contexto de presentación no extendido, de acuerdo con varias modalidades. Como con el método 1000 de la FIGURA 10, modalidades mantienen la visualización de gráficos de aplicación para una primera aplicación y una segunda aplicación, ambas compiladas para y en ejecución concurrente activa dentro de un primer sistema operativo.
El método 1200 comienza en el bloque 1204 al establecer un primer contexto de presentación del primer sistema operativo. El contexto de presentación puede ser único para la pantalla con la cual se asocia. Por ejemplo, las implementaciones del OS móvil pueden asociarse con un pantalla del dispositivo móvil que tiene una cierta resolución. El contexto de presentación puede establecerse para correlacionar la resolución de la pantalla asociada, de modo que los gráficos se presentarán adecuadamente para esa resolución. En el bloque 1208, el método 1200 calcula las actualizaciones para las superficies de la primera aplicación utilizando el primer sistema operativo. Como se discute en lo anterior, calcular actualizaciones en las superficies puede implicar utilizar datos de aplicación para determinar qué superficies han cambiado y en qué forma.
Las superficies actualizadas de la primera aplicación entonces se presentan utilizando el primer sistema operativo, en el bloque 1212, para generar una primera trama de gráficos en una primera ubicación de memoria. La presentación típicamente involucra convertir elementos primitivos de gráficos en bits (por ejemplo, un mapa de bits) para formar una trama de gráficos para visualización . Por ejemplo, la información de superficie define matemáticamente propiedades de cada superficie, incluyendo forma, tamaño, color, orden de capas (es decir, que otras superficies se encuentran en la parte frontal o en la parte posterior) , transparencia, etc. El motor de presentación del OS puede interpretar los datos de superficie para determinar, en cada ubicación (por ejemplo, ubicación "X, Y") en el contexto de presentación, qué bit desplegar como función para presentar toda la información de superficie (por ejemplo, utilizando técnicas de composición iterativa, rastreo por rayos, y/u otras) . Las superficies actualizadas de la primera aplicación pueden presentarse, utilizando el primer contexto de presentación, en un mapa de bits para almacenamiento en la primera ubicación de memoria (por ejemplo, memoria intermedia de tramas, memoria compartida, o cualquier otra ubicación de memoria útil) .
En algunas modalidades, en el bloque 1216, la primera trama de gráficos se despliega desde la primera ubicación de memoria hasta una pantalla de un primer ambiente de cómputo asociado con el primer sistema operativo. Por ejemplo, un controlador de pantalla para la pantalla del dispositivo móvil accede a la memoria intermedia de tramas asociada para desplegar el mapa de bits generado en el primer contexto de presentación. En el bloque 1220, el primer contexto de presentación se desincorpora (por ejemplo, "se descompone") .
En el bloque 1224, un segundo contexto de presentación del primer sistema operativo se establece. En algunas implementaciones, el segundo contexto de presentación es idéntico al primer contexto de presentación. Sin embargo, el segundo contexto de presentación también puede establecerse de acuerdo con características de una pantalla del segundo ambiente de cómputo (por ejemplo, la pantalla de escritorio) . Actualizaciones a las superficies de la segunda aplicación se calculan utilizando el primer sistema operativo en el bloque 1228. Estas actualizaciones entonces se presentan, en el bloque 1232, en el segundo contexto de presentación del primer sistema operativo para generar una segunda trama de gráficos en una segunda ubicación de memoria. Notablemente, la segunda ubicación de memoria es una ubicación de memoria compartida que se puede acceder por el primer sistema operativo y el segundo sistema operativo, los cuales se ejecutan concurrentemente en el módulo central compartido del dispositivo móvil.
En algunas modalidades, en el bloque 1236, la segunda trama de gráficos se despliega desde la segunda ubicación de memoria en una pantalla de un segundo ambiente de cómputo asociado con el segundo sistema operativo. Vale la pena señalar que, a diferencia de la FIGURA 10, tramas de gráficos actualizadas de ambas aplicaciones se presentan utilizando el motor de presentación del primer OS. Por ejemplo, la aplicación de consola del segundo OS puede acceder a la segunda ubicación de memoria compartida para recuperar directamente un mapa de bits presentado para visualización en la pantalla del segundo ambiente de cómputo. En el bloque 1240, el segundo contexto de presentación se desincorpora .
En algunas modalidades, el método 1200 itera a través de los bloques para mantener de manera concurrente los ambientes de gráficos para ambas aplicaciones. Por ejemplo, el OS móvil de manera iterativa establece, utiliza y descompone un contexto de presentación para la primera aplicación; después establece, utiliza, y descompone un contexto de presentación para la segunda aplicación. Utilizando esta técnica, toda la presentación puede realizarse por un OS (es decir, por el motor de presentación del primer OS), y no existe necesidad de proporcionar o utilizar funcionalidad de presentación del otro OS. Sin embargo, la técnica implica sobrecarga adicional asociada con establecer repetidamente y descomponer contextos de presentación .
Las modalidades anteriores de la presentación de ambiente cruzado describen cómo una trama de gráficos para una aplicación que se ejecuta en un primer OS puede desplegarse dentro de una ventana de consola de un espacio de interacción de usuario de un segundo OS en un ambiente de cómputo de varios OS utilizando contextos de presentación no extendidos. Para soportar interacción de usuario con las aplicaciones de ambiente cruzado, modalidades redirigen los eventos de entrada del espacio de interacción de usuario del segundo OS al primer OS de tal manera que las aplicaciones de ambiente cruzado reciban eventos de entrada como si vinieran del espacio de interacción de usuario del primer OS (es decir, la aplicación recibe los eventos de entrada a través de los mismos administradores de eventos y/o vistas a través de las cuales se recibiría una entrada de usuario si se desplegara dentro del espacio de interacción de usuario del primer OS) .
Con referencia nuevamente a las FIGURAS 7 y 8, el OS 160 de escritorio se configura para proporcionar un segundo espacio de interacción de usuario a través del ambiente 840 de terminal secundario adecuado para una experiencia de cómputo de escritorio. Como se describe en lo anterior, la aplicación 752 puede desplegarse dentro del espacio de interacción de usuario del OS 130 móvil mientras la aplicación 754, que se ejecuta en el OS 130 móvil, se despliega en la ventana 882 de consola del segundo espacio de interacción de usuario a través de la aplicación 782 de consola que se ejecuta en el OS 160 de escritorio utilizando modalidades de presentación de ambiente cruzado descritas en los anterior. De manera notable, las aplicaciones 752 y 754 pueden ser cualesquier aplicaciones compiladas para OS 130 móvil, que se ejecuta dentro del Ambiente de tiempo de ejecución de OS móvil y acepta eventos de entrada a través de la Infraestructura de OS móvil sin modificación para que despliegue o interactúe de manera remota (no en el espacio de interacción de usuario del OS 130 móvil) .
La FIGURA 13 ilustra la configuración 300b de arquitectura de OS para proporcionar soporte de interacción de usuario para aplicaciones de ambiente cruzado, de acuerdo con varias modalidades. En la configuración 300b de arquitectura de OS, controladores de dispositivos en el módulo central 320 compartido implementan las interfaces de hardware para dispositivos 844, 846, y/u 848 de E/S que forman el ambiente 840 de terminal secundario. A través de controladores de dispositivos, eventos de entrada para estos dispositivos aparecen en los dispositivos 1364, 1366, y/o 1368 de los dispositivos 1360 de E/S del módulo central 320 compartido. Debido a que los recursos de sistema del módulo central 320 compartido se encuentran disponibles para el OS 130 móvil y el OS 160 de escritorio, el OS móvil determina si eventos de entrada en los dispositivos 1364, 1366, y/o 1368 de entrada se pretenden para OS 130 móvil. Cuando el OS 160 de escritorio se configura para proporcionar un segundo espacio de interacción de usuario (es decir, el dispositivo 110 de cómputo móvil se conecta al ambiente 840 de terminal secundario) , el OS 130 móvil ignora los eventos de entrada de los dispositivos de entrada asociados con el segundo espacio de interacción de usuario. En la configuración 300b de arquitectura de OS, el OS 130 móvil ignora los eventos de entrada de los dispositivos 1364, 1366, y/o 1368. En este caso, el OS 160 de escritorio acepta eventos de entrada de los dispositivos 1364, 1366, y/o 1368.
El OS 160 de escritorio procesa los eventos de entrada de los dispositivos 1364, 1366, y/o 1368 y determina cómo distribuir los eventos a varias ventanas o elementos de GUI dentro del OS 160 de escritorio. Por ejemplo, el sistema 774 de ventanas del OS 160 de escritorio puede aceptar eventos de entrada de los dispositivos 1364, 1366, y/o 1368. En una modalidad, el sistema de gráficos del OS 160 de escritorio es un sistema de gráficos de X-Windows.
En un caso, el usuario hace clic en un botón de un dispositivo de señalamiento en una ubicación de pantalla dentro de la ventana 882 de consola de la aplicación 782 de consola. Un evento de entrada correspondiente aparece en el dispositivo 1368 y el OS 160 de escritorio recibe y procesa el evento de entrada. El sistema 774 de ventanas dirige el evento de entrada a la aplicación 782 de consola a través de la aplicación 754, que se ejecuta en el OS 130 móvil, se despliega utilizando modalidades de la presentación de ambiente cruzado. Como se describe en lo anterior, la aplicación 754 es una aplicación móvil y ejemplifica las vistas y otros administradores de eventos utilizando bibliotecas del OS 130 móvil que recibe la entrada de la cola 736 de entrada del OS 130 móvil para aceptar entrada de usuario. Para presentar evento de entrada a la aplicación 754 de tal forma que la aplicación 754 interpretará adecuadamente el evento de entrada, la aplicación 782 de consola mapea el evento de entrada en el contexto de gráficos del OS 130 móvil y pasa el evento a la cola 736 de entrada del OS 130 móvil a través del dispositivo 1370 de entrada virtual. El dispositivo 1370 de entrada virtual aparece en el OS 130 móvil como dispositivo de entrada con el protocolo de evento de entrada adecuado para OS 130 móvil. Además, eventos de entrada se formatean por la aplicación 782 de consola para que sean con respecto al contexto de gráficos del OS 130 móvil. El OS 130 móvil asocia el dispositivo 1370 de entrada virtual con la aplicación 754 de manera que la aplicación 754 recibe el evento de entrada de la cola de evento del OS móvil. Por ejemplo, el OS 130 móvil puede asociar el dispositivo 1370 de entrada virtual con el ID de pantalla virtual de la aplicación 754. De esta manera, la aplicación 754 recibe y procesa el evento de entrada como si la aplicación 754 se desplegara e interactuara a través del espacio de interacción de usuario del OS 130 móvil.
La FIGURA 14 ilustra aspectos del soporte de interacción de usuario para aplicaciones de ambiente cruzado presentadas utilizando un contexto de gráficos no extendido, de acuerdo con varias modalidades. El método 1400 comienza en el bloque 1402, cuando un evento de entrada se recibe de un dispositivo de entrada (por ejemplo, teclado 846, dispositivo 848 de señalamiento) conectado al dispositivo 110 de cómputo móvil. Como se describe en lo anterior, el evento de entrada puede aparecer en un dispositivo de entrada en el módulo central compartido. En el bloque 1404, el OS móvil determina si el dispositivo 110 de cómputo móvil se acopla y el OS de escritorio se asocia con el dispositivo de entrada. Por ejemplo, si el dispositivo 110 de cómputo móvil no se acopla con un ambiente de terminal secundario y el OS de escritorio se suspende, el OS móvil puede determinar que el OS de escritorio no se asocia con el dispositivo de entrada. Si el OS de escritorio se suspende o el dispositivo de entrada no es parte de un ambiente de terminal secundario asociado con el OS de escritorio, el OS móvil acepta el comando de entrada del dispositivo de entrada en el bloque 1406.
Si el OS de escritorio no se suspende y el dispositivo de entrada es parte de un ambiente de terminal secundario asociado con el OS de escritorio, el OS móvil ignora el evento de entrada en el dispositivo de entrada y el OS de escritorio acepta el evento de entrada en el bloque 1408. En el bloque 1410, el OS de escritorio distribuye el evento de entrada a la ventana adecuada o elemento de GUI dentro del OS de escritorio. Si el evento de entrada no se dirige a la ventana de consola, el evento de entrada se dirige a otra ventana o elemento de GUI en el bloque 1412. Si el evento de entrada se dirige a la ventana de consola (por ejemplo, el usuario hace clic en un dispositivo de señalamiento dentro del área de ventana de consola) , el evento de entrada se pasa a la aplicación de consola como evento de entrada en el bloque 1414.
En el bloque 1416, un dispositivo de entrada virtual se genera para eventos de entrada de la aplicación de consola. El dispositivo de entrada virtual puede generarse en el módulo central compartido o eventos de entrada pueden escribirse directamente en los dispositivos de entrada de OS móvil. En el bloque 1418, la aplicación de consola mapea el evento de entrada en el contexto de gráficos del OS móvil. Por ejemplo, la aplicación de consola puede mapear la posición de un evento de entrada dentro de la ventana de consola de la aplicación de consola en la posición dentro del contexto de gráficos del OS móvil. La aplicación de consola puede traducir el evento de entrada para un formato de entrada o estado de modo de entrada para el OS móvil. Por ejemplo, un formato de entrada puede ser diferente entre el OS de escritorio y el OS móvil. Aún con formatos de entrada comunes, el OS de escritorio y el OS móvil pueden tener diferentes estados de modo de entrada. Por ejemplo, el OS de escritorio puede procesar eventos de entrada utilizando un estado de entrada de modo sin contacto mientras el OS móvil se encuentra en un estado de entrada de modo de contacto. En este caso, un evento de entrada generado por un dispositivo de señalamiento en el espacio de interacción de usuario de OS de escritorio puede traducirse para que aparezca como evento basado en gestos en el dispositivo de entrada virtual.
En el bloque 1420, el dispositivo de entrada virtual se asocia en el OS móvil con el dispositivo de pantalla virtual para la aplicación desplegada dentro de la ventana de consola. Por ejemplo, múltiples aplicaciones pueden ejecutarse en el OS móvil y desplegarse dentro de diferentes ventanas de consola en el espacio de interacción de usuario del OS de escritorio. Cada aplicación desplegada dentro de una ventana de consola separada en el espacio de interacción de usuario del OS de escritorio se asigna con un ID de pantalla virtual dentro del OS móvil. Por lo tanto, cuando el OS móvil recibe un evento de entrada de una aplicación de consola del OS de escritorio a través de un dispositivo virtual, el OS móvil puede mapear el dispositivo virtual en la aplicación correcta a través del ID de pantalla virtual. En el bloque 1422, el evento de entrada se pasa a la aplicación asociada con la pantalla virtual y la aplicación puede procesar el evento de entrada como si ocurriera a través de un espacio de interacción de usuario del OS móvil. De manera notable, el método anterior funciona con cualquier aplicación del OS 130 móvil, la aplicación no necesita ser diseñada especialmente para aceptar eventos de entrada a través de la aplicación de consola del OS de escritorio.
Modalidades de Contexto de Presentación ¾Extendido Algunas modalidades manejan soporte de interfaz de usuario concurrente a través de múltiples OS al establecer contextos de presentación extendidos dentro del primer sistema operativo. Como se discute en lo anterior, el primer OS (por ejemplo, el OS móvil, Android) típicamente se configura para definir un espacio de interacción de usuario activo simple con un contexto de presentación activo simple. Técnicas novedosas se describen en la presente para engañar efectivamente al primer OS para manejar de manera concurrente múltiples espacios de interacción de usuario al poner en mosaicos un número de denominados "espacios de contexto" en un solo espacio de presentación extendido y asociar cada espacio de contexto con una pantalla diferente. Modalidades incluyen técnicas para manejar las salidas de visualización en múltiples espacios de interacción de usuario y técnicas para manejar interacción de usuario en estos textos.
Regresando al ejemplo discutido en lo anterior con referencia a las modalidades de contexto de presentación no extendido, suponer nuevamente que una aplicación de calendario y una aplicación de procesamiento de palabras se compilan ambas para un primer OS (por ejemplo, OS móvil, OS de Android) y ambas se ejecutan concurrentemente dentro del primer OS en un dispositivo móvil. Un segundo OS (por ejemplo, un OS no móvil, tipo Hydroid) se ejecuta concurrentemente en el dispositivo móvil utilizando un módulo central compartido. Un usuario ha conectado el dispositivo móvil con un segundo ambiente de cómputo de escritorio, y el ambiente de cómputo de escritorio se asocia con y despliega el espacio de interacción de usuario para el segundo OS. El usuario desea interactuar con la aplicación de procesamiento de palabras, que se ejecutan en el primer OS, a través del ambiente de cómputo de escritorio del segundo OS. Es deseable manejar el espacio de interacción de usuario del ambiente de cómputo de escritorio utilizando el segundo OS del ambiente de cómputo móvil (es decir, el dispositivo móvil) en una forma que sea transparente para el usuario.
La FIGURA 15 ilustra aspectos del soporte de interfaz de usuario concurrente a través de múltiples OS utilizando contextos de presentación extendidos, de acuerdo con varias modalidades. En el diagrama 1500 de presentación de aplicaciones ilustrado en la FIGURA 15, la primera aplicación 1510 (por ejemplo, aplicación de calendario) calcula actualizaciones para una primera superficie 1512 dentro del primer OS. La primera superficie 1512 se almacena en una primera ubicación de memoria en un espacio de memoria compartida por el primer OS. Específicamente, la primera aplicación 1510 actualiza la memoria intermedia 1514 posterior de la primera superficie 1512. De manera similar, la segunda aplicación 1530 (por ejemplo, aplicación de procesamiento de palabras) calcula actualizaciones para una segunda superficie 1532 utilizando el primer sistema operativo. Nuevamente, las actualizaciones por la segunda aplicación 1530 en la segunda superficie 1532 se hacen en la memoria intermedia 1534 posterior. La segunda superficie 1532 se almacena en una segunda ubicación de memoria en el espacio de memoria compartida por el primer OS.
El primer OS determina cuándo la información de superficie se cambia e inicia una secuencia de presentación.
El primer OS puede realizar un bucle simple sobre todas las superficies, incluyendo la primera superficie 1512 y la segunda superficie 1532, determina cuándo la información de superficie asociada con las aplicaciones particulares ha cambiado. En la secuencia de presentación, el primer OS determina cuándo información de superficie se cambia y transfiera la memoria intermedia 1516 frontal y la memoria intermedia 1514 posterior de la primera superficie 1512, y la memoria intermedia 1536 frontal y la memoria intermedia 1534 posterior de la segunda superficie 1532. El primer OS establece un contexto 1520 de presentación extendido en una tercera ubicación de memoria en un espacio de memoria compartida y presenta la primera superficie 1512 en un primer espacio 1522 de contexto del contexto 1520 de presentación extendido. El primer OS presenta la segunda superficie 1533 en un segundo espacio 1524 de contexto del contexto 1520 de presentación extendido.
En modalidades, el contexto 1520 de presentación extendido puede solaparse en el espacio de memoria con la memoria intermedia de tramas del primer OS. Por ejemplo, la ubicación de memoria del primer espacio 1522 de contexto del contexto 1520 de presentación extendido puede ser co-extensivo con memoria intermedia de tramas del primer OS. El primer OS pasa una notificación al segundo OS de que la imagen final se presenta en la tercera ubicación de memoria.
Por ejemplo, el primer OS puede pasar un descriptor de archivos a la ubicación de memoria compartida del segundo espacio 1524 de contexto del contexto 1520 extendido a una aplicación de consola del segundo OS a través de un canal de comunicación entre procesos. El segundo OS accede a la segunda porción del contexto de gráficos extendido en la tercera ubicación de memoria para recuperar la trama 1538 de gráficos presentada para visualización en la ventana 1540 de consola del segundo OS. Por ejemplo, la aplicación de consola del segundo OS puede mapear el descriptor de archivos en su espacio de proceso y leer la trama de gráficos presentada de la tercera ubicación de memoria para desplegar dentro del espacio de interacción de usuario del segundo OS. De esta manera, el segundo OS despliega la trama de gráficos presentada para la segunda aplicación dentro de su espacio de interacción de usuario en tiempo real.
La FIGURA 16 muestra un diagrama 1600 de flujo de un método ilustrativo para presentación de ambiente cruzado utilizando un contexto de presentación extendido, de acuerdo con varias modalidades. Las modalidades mantienen la visualización de gráficos de aplicación para una primera aplicación (por ejemplo, una aplicación de calendario) y una segunda aplicación (por ejemplo, una aplicación de procesamiento de palabras) . Se supone que ambas aplicaciones se compilan para y en ejecución concurrente activa dentro de un primer sistema operativo (por ejemplo, el OS de Android) , pero que un usuario desee interactuar con la segunda aplicación a través de un segundo ambiente de cómputo asociado con un segundo OS. De manera notable, estas técnicas pueden aplicarse en ambientes donde los dos OS son incompatibles (por ejemplo, aplicaciones compiladas para el primer OS podrían no ejecutarse directamente en el segundo OS) . En algunas implementaciones, como se describe en lo anterior, los dos OS se ejecutan de manera independiente y concurrente en un módulo central compartido del dispositivo móvil .
El método 1600 comienza en el bloque 1604 al establecer un contexto de presentación extendido del primer OS. Como se discute en lo anterior, el contexto de presentación típicamente se establece de acuerdo con características de una sola pantalla activa. Sin embargo, el contexto de presentación extendido se establece para que tenga un primer espacio de contexto asociado con la primera aplicación y un segundo espacio de contexto asociado con la segunda aplicación. El primer y segundo espacios de contexto no se solapan.
En algunas modalidades, el contexto de presentación extendido se genera al poner en mosaicos la pantalla activa del dispositivo (por ejemplo, la pantalla del dispositivo móvil que tiene el módulo central compartido) y cualesquier pantallas virtuales (es decir, las pantallas del primer OS asociadas con las ventanas de consola desplegadas dentro del espacio de interacción de usuario del segundo OS) para formar lo que para el primer OS parece una pantalla grande. Las regiones de contexto de presentación extendido se diseñan como espacios de contexto no solapados, para mantener su asociación con sus pantallas físicas o virtuales respectivas. De manera notable, en algunas implementaciones , diferentes espacios de contexto pueden tener diferentes resoluciones u otras características. También, en ciertas modalidades, los espacios de contexto no son contiguos. Por ejemplo, el contexto de presentación extendido se establece de tal manera que el espacio se queda entre cada espacio de contexto que no asigna a ningún espacio de contexto.
En el bloque 1608, se calculan actualizaciones para superficies de la primera aplicación y la segunda aplicación utilizando el primer sistema operativo. Las superficies actualizadas entonces se presentan utilizando el primer sistema operativo, en el bloque 1612, para generar una trama de gráficos extendida en una ubicación de memoria compartida accesible por el primer sistema operativo y un segundo sistema operativo (por ejemplo, el cual puede ejecutarse de manera concurrente en un módulo central compartido) . Una primera porción de la trama de gráficos extendida se asocia con el primer espacio de contexto (asociado con la primera aplicación) y una segunda porción de la trama de gráficos extendida se asocia con el segundo espacio de contexto (asociado con la segunda aplicación) . Cuando la presentación ocurre en el bloque 1608, las superficies actualizadas de la primera aplicación se presentan en la primera porción de la trama de gráficos extendida, y las superficies actualizadas de la segunda aplicación se presentan en la segunda porción de la trama de gráficos extendida. Vale la pena observar que, de esta manera, la trama de gráficos extendida efectivamente incluye superficies presentadas de ambas aplicaciones puestas en mosaicos en sus espacios de contexto adecuados.
En algunas modalidades, en el bloque 1616, la primera porción de la trama de gráficos extendida asociada con el primer espacio de contexto se despliega desde la ubicación de memoria compartida hasta una pantalla o pantallas de un primer ambiente de cómputo asociado con el primer OS. Por ejemplo, como se discute en lo anterior, la ubicación de memoria compartida es la memoria intermedia de tramas (o se copia con la memoria intermedia de tramas) del dispositivo móvil, y un controlador de dispositivo de visualización del dispositivo móvil accede a la memoria intermedia de tramas para desplegar la primera porción de la trama de gráficos extendida en sus pantallas. Además, en algunas modalidades, la segunda porción de la trama de gráficos extendida asociada con el segundo espacio de movimiento se despliega en el bloque 1620, desde la ubicación de memoria compartida hasta una pantalla de un segundo ambiente de cómputo asociado con el segundo sistema operativo. Por ejemplo, como se discute en lo anterior, la ubicación de memoria compartida se copia en la memoria intermedia de tramas del segundo OS asociado con el segundo ambiente de cómputo (por ejemplo, de escritorio) , y un controlador de dispositivo de visualización despliega la segunda porción de la trama de gráficos extendida en una pantalla del segundo ambiente de cómputo.
En modalidades discutidas con referencia a la FIGURA 12, la presentación para los gráficos actualizados de la segunda aplicación se realiza remotamente por el segundo OS. En modalidades discutidas con referencia a la FIGURA 15, la presentación para ambas aplicaciones se realiza localmente por el motor de presentación del dispositivo móvil, pero el contexto de presentación se establece y se desincorpora continuamente. Las modalidades discutidas con referencia a la FIGURA 16 permiten que la presentación de ambas aplicaciones se realice localmente por el motor de presentación del dispositivo móvil, mientras mantiene un contexto de presentación simple aunque extendido (es decir, sin desincorporar el contexto de presentación) .
La FIGURA 17 muestra un diagrama 1700 de flujo de otro método ilustrativo para presentación de ambiente cruzado utilizando un contexto de presentación extendido, de acuerdo con varias modalidades. Como en el método 1600 de la FIGURA 16, las modalidades mantienen la visualización de gráficos de aplicación para una primera aplicación y una segunda aplicación para que ambas se compilen y se encuentren en ejecución concurrente activa dentro de un primer sistema operativo. El método 1700 comienza el establecer un contexto de presentación extendido del primer sistema operativo en el bloque 1704 y calcula actualizaciones en las superficies de la primera aplicación y la segunda aplicación utilizando el primer sistema operativo en el bloque 1708. Como se discute en lo anterior, el contexto de presentación extendido se establece para tener un primer espacio de contexto asociado con la primera aplicación y un segundo espacio de contexto asociado con la segunda aplicación. El primer y segundo espacios de contexto no se solapan. En algunas implementaciones, los bloques 1704 y 1708 se realizan en una forma sustancialmente idéntica a los bloques 1604 y 1608, respectivamente .
En el bloque 1712, las superficies actualizadas de la primera aplicación se presentan de acuerdo con el primer espacio de contexto utilizando el primer sistema operativo para generar una primera trama de gráficos en una memoria intermedia de tramas del primer sistema operativo. Por ejemplo, el primer espacio de contexto puede asociarse con una resolución particular, desplazamientos de mosaico particulares (por ejemplo, comenzando en la posición "X") , etc. En algunas implementaciones , la primera trama de gráficos se genera en una forma sustancialmente idéntica a la generación de la porción respectiva de la trama de gráficos extendida en el método 1600 de la FIGURA 16. En algunas modalidades, en el bloque 1716, la primera trama de gráficos asociada con el primer espacio de contexto se despliega desde la memoria intermedia de tramas hasta una pantalla de un primer ambiente de cómputo asociado con el primer sistema operativo.
En el bloque 1720, las superficies actualizadas de la segunda aplicación se presentan utilizando el primer sistema operativo para generar una segunda trama de gráficos en una ubicación de memoria compartida. Como se discute en lo anterior, la ubicación de memoria compartida se puede acceder por el primer sistema operativo y un segundo sistema operativo (por ejemplo, el cual puede ejecutarse de manera concurrente en un módulo central compartido) . En algunas modalidades, en el bloque 1724, la segunda trama de gráficos asociada con el segundo espacio de movimiento se despliega desde la ubicación de memoria compartida hasta una pantalla de un segundo ambiente de cómputo asociado con el segundo sistema operativo.
De manera notable, las modalidades de ambas FIGURAS 16 y 17 establecen contextos de presentación extendidos con espacios de contexto para cada aplicación. Sin embargo, aunque el método 1600 de la FIGURA 16 presenta todas las actualizaciones de gráficos en un solo mapa de bits extendido, el método 1700 de la FIGURA 17 presenta las actualizaciones de gráficos en mapas de bits separados. Una o la otra técnica pueden ser deseables, por ejemplo, dependiendo de cómo se maneje y/o accede la memoria.
Como con la modalidad de la FIGURA 12, en las modalidades de las FIGURAS 16 y 17 las tramas de gráficos actualizadas de ambas aplicaciones se presentan utilizando el motor de presentación del primer OS. Utilizar el motor de presentación del primer OS permite que ambas aplicaciones utilicen capacidades de aceleración de hardware del dispositivo móvil que se encuentran disponibles en el primer OS. Por ejemplo, en las modalidades de las FIGURAS 12, 16, y/o 17, cualquiera o ambas de la primera y la segunda aplicaciones pueden presentarse por el primer OS utilizando presentación asistida por hardware 2D o 3D.
La visualización remota de una trama de gráficos para una aplicación que se ejecuta en un primer OS (es decir, OS móvil, Android) utilizando un contexto de presentación extendido proporciona una forma para que el primer OS proporcione presentación de múltiples aplicaciones para pantalla de múltiples espacios de interacción de usuario utilizando un contexto de presentación simple. Sin embargo, un contexto de presentación extendido crea problemas para manejar eventos de entrada para aplicaciones desplegadas a través del contexto de presentación extendido. Específicamente, la cola de entrada del primer OS debe configurarse para manejar múltiples eventos de entrada de múltiples aplicaciones desplegadas a través de pantallas virtuales separadas de un contexto de presentación extendido.
Modalidades del soporte de interacción de usuario de ambiente cruzado se dirigen a manejar eventos de entrada de usuario para múltiples aplicaciones que se ejecutan en un primer OS y se despliegan en múltiples espacios de interacción de usuario separados (es decir, el espacio de interacción de usuario del dispositivo móvil y un espacio de interacción de usuario de OS de escritorio) a través de un contexto de presentación extendido del primer OS. Modalidades incluyen una cola de entrada extendida donde los eventos de entrada de los dispositivos de entrada virtual para aplicaciones remotamente desplegadas se mapean en espacios de movimiento separados dentro de la cola de entrada. Por ejemplo, una primera aplicación (por ejemplo, aplicación de calendario) se ejecuta en un primer OS y se despliega en una primera pantalla asociada con el primer dispositivo (por ejemplo, la pantalla del dispositivo móvil en la cual se ejecuta el primer OS) . Una segunda aplicación (por ejemplo, aplicación de procesamiento de palabras) también se ejecuta de manera concurrente con la primera aplicación, pero se presenta dentro de un espacio de contexto (es decir, pantalla virtual) del contexto de presentación extendido y se despliega en un segundo espacio de interacción de usuario de un segundo OS que se ejecuta concurrentemente con el primer OS en un módulo central compartido de un dispositivo móvil. El primer OS presenta una trama de gráficos a través de un contexto de presentación extendido que incluye gráficos de aplicación para la primera aplicación en el primer espacio de contexto (es decir, la pantalla del dispositivo móvil) y la segunda aplicación en el segundo espacio de contexto. El segundo espacio de contexto se despliega en un espacio de interacción de usuario del segundo OS a través de una aplicación de consola que se ejecuta en el segundo OS.
Eventos de entrada para aplicaciones desplegadas remotamente a través de un contexto de presentación extendido se reciben por el segundo OS (es decir, OS de escritorio, Hydroid) y se pasan a un dispositivo de entrada virtual por la aplicación de consola del segundo OS de la manera que se describe en lo anterior para contextos de gráficos no extendidos. Sin embargo, como se describe en lo anterior, los eventos de entrada recibidos en el OS móvil desde el dispositivo de entrada virtual se correlacionan con la ventana de consola desplegada dentro del espacio de interacción de usuario del segundo OS. Dispositivos de entrada virtual se mapean en espacios de movimiento dentro de la cola de entrada extendida que se asocia con pantallas virtuales que corresponden con aplicaciones remotamente desplegadas. La cola de entrada extendida permite que el primer OS procese de manera correcta la entrada de múltiples dispositivos de entrada local y virtual pretendidos para múltiples aplicaciones que se ejecutan concurrentemente utilizando una sola cola de entrada.
Las FIGURAS 18a y 18b ilustran aspectos del soporte de interacción de usuario para aplicaciones de ambiente cruzado utilizando un contexto de presentación extendido, de acuerdo con varias modalidades. La FIGURA 18a ilustra un espacio 1810 de interacción de usuario que despliega remotamente aplicaciones que se ejecutan en un primer OS (por ejemplo, la GUI del segundo OS que despliega aplicaciones que se ejecutan en el primer OS) . Por ejemplo, la primera, segunda, y tercera aplicaciones pueden ejecutarse en el primer OS (es decir, en ejecución concurrente activa con el primer OS) . El primer OS puede desplegar la primera, segunda, y tercera aplicaciones dentro de un primer, segundo, y tercer espacio de contexto de un contexto de presentación extendido del primer OS de acuerdo con las modalidades descritas en lo anterior. Las ventanas 1812 y 1814 de consola en el espacio 1810 de interacción de usuario pueden desplegar la segunda aplicación y la tercera aplicación que se ejecutan en el primer OS, respectivamente.
La FIGURA 18b ilustra una cola 1840 de entrada extendida del primer OS que proporciona soporte de interacción de usuario para cada aplicación que se ejecuta en el primer OS. La cola 1840 de entrada extendida incluye un primer espacio 1842 de movimiento, un segundo espacio 1844 de movimiento, y un tercer espacio 1846 de movimiento, El primer espacio de movimiento se asocia con el primer espacio de contexto del contexto de presentación extendido del primer OS, el cual típicamente se utiliza para presentar una pantalla 1852 no virtual del primer OS (es decir, el espacio de contexto asociado con las pantallas 116 del dispositivo 110 de cómputo móvil) . El segundo y tercer espacios de movimiento se asocian con las pantallas 1854, 1856 virtuales que se presentan a través del segundo y tercer espacios de contexto, respectivamente.
Cuando ocurre un evento de entrada que se dirige a una ventana de consola de una aplicación remotamente desplegada, el evento de entrada se dirige al espacio de movimiento asociado con la pantalla virtual a través de la cual se despliega la aplicación. Por ejemplo, si el usuario hace clic con un dispositivo de señalamiento dentro de la ventana 1812 de consola del espacio 1810 de interacción de usuario, como se indica por el evento 1820 de entrada, el sistema de ventanas del segundo OS dirige el evento de entrada a la aplicación de consola asociada con la ventana 1812 de consola. La aplicación de consola mapea el evento de entrada en un dispositivo de entrada virtual como se describe en lo anterior. Sin embargo, el evento de entrada se relaciona con la ventana 1812 de consola. Si el evento de entrada se alimenta directamente en la cola de entrada del primer OS, el evento de entrada puede no dirigirse al administrador de eventos de aplicación correcta. Por lo tanto, el evento 1820 de entrada del dispositivo de entrada virtual se vuelve a mapear en el segundo espacio 1844 de movimiento. De esta manera, la cola de entrada extendida dirige el evento de entrada a administradores de eventos de la segunda aplicación que reciben y procesan el evento 1820 de entrada.
En modalidades, pantallas virtuales se desplazan dentro de la cola de entrada de OS móvil. Por ejemplo, en la FIGURA 18b, pantallas 1854 y 1856 virtuales se desplazan por el desplazamiento 1858 de pantalla virtual dentro de la cola 1840 de entrada de OS móvil. El desplazamiento 1858 de pantalla virtual evita que pantallas virtuales aparezcan adyacentes dentro de la cola de entrada, lo cual puede provocar que un evento de entrada pretendido para una pantalla virtual se interprete dentro de un espacio de movimiento asociado con una aplicación diferente. El desplazamiento de pantalla virtual nunca debe ser lo suficientemente grande para que se utilice como parámetros de resolución de pantalla virtual actual. En una modalidad, el desplazamiento 1858 de pantalla virtual se selecciona para que tenga 10000 pixeles.
La FIGURA 19 ilustra un método 1900 para recibir eventos de entrada para aplicaciones de ambiente cruzado desplegadas a través de un contexto de presentación extendido, de acuerdo con varias modalidades. Por ejemplo, el método 1900 puede utilizarse para procesar eventos de entrada para una primera aplicación y una segunda aplicación que se ejecuta dentro de un primer OS, la primera aplicación desplegada localmente en el espacio de interacción de usuario del primer OS y la segunda aplicación desplegada remotamente en un espacio de interacción de usuario de un segundo OS a través de un contexto de presentación extendido del primer OS.
El método 1900 comienza en el bloque 1902, cuando una primera entrada de usuario se recibe en un primer OS, una primera aplicación y una segunda aplicación en ejecución concurrente activa dentro del primer OS, la primera aplicación desplegada dentro de un primer ambiente de usuario asociado con el primer OS y la segunda aplicación desplegada dentro de un segundo ambiente de usuario asociado con un segundo OS, el primer y segundo sistemas operativos se ejecutan concurrentemente en un módulo central compartido, el primer OS mantiene gráficos de aplicación para la segunda aplicación al presentar una trama de gráficos para la segunda aplicación a través de una primera pantalla virtual de un contexto de presentación extendido. En el bloque 1904, el primer OS establece una cola de entrada extendida que incluye un primer espacio de movimiento y un segundo espacio de movimiento, el segundo espacio de movimiento corresponde con la primera pantalla virtual. Por ejemplo, el primer sistema operativo asigna la primera pantalla virtual para la segunda aplicación, establece un contexto de presentación extendido que tiene un primer espacio de contexto y un segundo espacio de contexto, asocia la primera pantalla virtual con el segundo espacio de contexto, y presenta una trama de gráficos para la segunda aplicación a través del segundo espacio de contexto del contexto de presentación extendido utilizando las técnicas descritas en lo anterior.
En el bloque 1906, un primer evento de entrada de usuario se recibe por el primer OS en un primer dispositivo de entrada virtual desde una primera aplicación de consola que se ejecuta en el segundo OS que despliega la trama de gráficos presentada para la segunda aplicación a través del segundo OS. En el bloque 1908, el primer dispositivo de entrada virtual se mapea en el segundo espacio de movimiento de la cola de entrada extendida del primer sistema operativo.
El mapeo del primer dispositivo de entrada virtual en el segundo espacio de movimiento permite que la cola de entrada extendida del primer OS asocie correctamente los eventos de entrada del primer dispositivo de entrada virtual en administradores de eventos dentro de vistas de la segunda aplicación. Específicamente, cuando el evento de entrada se mapea en el segundo espacio de movimiento, el primer OS tratará el evento de entrada como si se presentara en una ubicación asociada con la segunda aplicación en la cola de entrada extendida. En el bloque 1910, el primer OS pasa el primer evento de entrada de usuario a la segunda aplicación desde el primer dispositivo de entrada virtual mapeado. La cola de entrada extendida utiliza la naturaleza de mosaicos del contexto de presentación extendido para permitir que la cola de entrada maneje múltiples eventos de entrada de múltiples espacios de interacción de usuario y dirija los eventos de entrada a los administradores de eventos adecuados de las aplicaciones pretendidas.
Modalidades de Contexto Duplicado Modalidades de los contextos de presentación extendidos y no extendidos se describen en lo anterior en el contexto de mantener el soporte de espacio de interacción de usuario concurrente a través de múltiples aplicaciones sobre múltiples sistemas operativos. En muchos casos, es deseable duplicar el contexto para un solo espacio de interacción de usuario. Se desea ver e interactuar con el primer OS (es decir, "duplicar" el espacio de interacción) concurrentemente en un segundo ambiente de cómputo asociado con un segundo OS (por ejemplo, un ambiente de escritorio asociado con OS de Hydroid) . A través del espacio de interacción de usuario duplicado, el usuario puede interactuar con el primer OS como si interactuara a través del dispositivo local (es decir, el usuario puede navegar a través de aplicaciones disponibles, aplicaciones de inicio y parada, utiliza las capacidades de búsqueda del primer OS, etc.).
El primer OS (por ejemplo, el OS móvil, Android) típicamente se configura para definir un espacio de interacción de usuario activo simple. El espacio de interacción de usuario incluye una pantalla activa (por ejemplo, con características asociadas, como resolución) y uno o más dispositivos de entrada activos para permitir interacción de usuario con elementos desplegados en la pantalla activa. Novedosas técnicas se presentan para utilizar presentación de ambiente cruzado para proporcionar uno o más espacios de interacción de usuario duplicados a través de múltiples OS. Como se discute en lo anterior, modalidades operan incluso donde los múltiples OS son incompatibles y/o se ejecutan independientemente y de manera concurrente en un módulo central compartido.
Mantener el soporte de interacción de usuario concurrente con un contexto duplicado puede lograrse utilizando muchos de los mismos elementos del sistema mencionado en lo anterior con respecto a mantener soporte de interacción de usuario concurrente para aplicaciones de ambiente cruzado. Por ejemplo, con referencia a la FIGURA 7, el contexto de gráficos para el OS 130 móvil puede desplegar activamente una aplicación (por ejemplo, aplicaciones 752 y/o 754) y/o una pantalla de inicio del OS 130 móvil (por ejemplo, aplicación 451 de pantalla de inicio del OS 430 de Android) . La información de superficie para una aplicación activamente desplegada y/o la pantalla de inicio del OS móvil pueden almacenarse dentro de la memoria 724 compartida. El contexto duplicado para OS 130 móvil puede desplegarse dentro del espacio de interacción de usuario del OS 160 de escritorio a través de la aplicación 782 de consola.
La FIGURA 20 muestra un diagrama 2000 de flujo de un método ilustrativo para presentación de ambiente cruzado de un contexto de gráficos para proporcionar un espacio de interacción de usuario duplicado, de acuerdo con varias modalidades. El método 2000 comienza en el bloque 2004 al calcular utilizando un primer sistema operativo, actualizaciones en un conjunto de superficies de una primera aplicación compilada para y en ejecución activa dentro del primer sistema operativo. Por ejemplo, los cálculos se hacen para determinar cambios en las formas, tamaños, texturas, estratificado, etc., de la superficie. Las actualizaciones de superficie entonces se presentan en el bloque 2008, utilizando el primer sistema operativo, para generar una trama de gráficos. La trama de gráficos puede ser un mapa de bits que refleja la información de gráficos actualizada para la aplicación.
En el bloque 2012, la trama de gráficos se almacena en una ubicación de memoria compartida accesible por el primer sistema operativo y un segundo sistema operativo. En algunas modalidades, el primer y segundo OS se ejecutan concurrentemente en un módulo central compartido. La trama de gráficos puede desplegarse en una primera pantalla de aplicación de la primera aplicación en una primera pantalla de un primer ambiente de cómputo utilizando el primer sistema operativo en el bloque 2016. Por ejemplo, la ubicación de memoria compartida puede ser una memoria intermedia de tramas o puede copiarse a una memoria intermedia de tramas del primer sistema operativo. Un controlador de dispositivo de visualización del dispositivo local (por ejemplo, el cual ejecuta el módulo central compartido) accede a la memoria intermedia de tramas para desplegar el mapa de bits.
Subsiguiente al almacenamiento de la trama de gráficos en la ubicación de memoria compartida en el bloque 2012, es deseable informar al segundo OS que la información de gráficos actualizada se encuentra disponible. En el bloque 2020, un descriptor de archivos se pasa, indicando la ubicación de memoria compartida a una aplicación de consola compilada para y en ejecución activa dentro del segundo OS. En algunas implementaciones, el descriptor de archivos incluye una indicación de la ubicación de memoria compartida. En otras implementaciones, el descriptor de archivos incluye información adicional, como un indicador que indica disponibilidad de la información de gráficos actualizada para la aplicación que se duplica.
Como se describe en lo anterior, la aplicación de consola puede ser X- Windows o tipo similar de aplicación que se despliega dentro de una ventana de una pantalla en el segundo ambiente de cómputo. En el bloque 2024, la aplicación de consola accede a la información de gráficos actualizada (por ejemplo, el mapa de bits) en la ubicación de memoria compartida de acuerdo con el descriptor de archivos y despliega la trama de gráficos de la ubicación de memoria compartida en una segunda pantalla de aplicación de la primera aplicación en una segunda pantalla de un segundo ambiente de cómputo. En algunas modalidades, la información de gráficos actualizada de la aplicación se despliega sustancial y concurrentemente en las pantallas de ambos ambientes primero y segundo de cómputo.
La FIGURA 21 muestra un diagrama 2100 de flujo de otro método ilustrativo para presentación de ambiente cruzado de un contexto de gráficos para proporcionar un espacio de interacción de usuario duplicado, de acuerdo con varias modalidades. Como en la FIGURA 20, el método 2100 comienza en el bloque 2104 al calcular, utilizando un primer sistema operativo, actualizaciones en un conjunto de superficies de una primera aplicación compilada para y en ejecución activa dentro del primer sistema operativo. En el bloque 2108, el conjunto actualizado de superficies se almacena en una ubicación de memoria compartida accesible por el primer sistema operativo y un segundo sistema operativo (por ejemplo, que se ejecuta concurrentemente en un módulo central compartido) .
En el bloque 2112, el conjunto actualizado de superficies se presenta con el primer sistema operativo para generar una primera trama de gráficos. La primera trama de gráficos entonces puede desplegarse, en el bloque 2116, en una primera pantalla de aplicación de la primera aplicación en una primera pantalla de un primer ambiente de cómputo utilizando el primer sistema operativo. Por ejemplo, el OS 130 móvil presenta los gráficos de aplicación actualizados y despliega los gráficos actualizados en las pantallas 116 del dispositivo 110 móvil.
En cualquier momento subsiguiente al almacenamiento del conjunto actualizado de superficies en la memoria compartida en el bloque 2108, es deseable notificar al segundo OS que la información de gráficos actualizada se encuentra disponible. En el bloque 2120, un descriptor de archivos se pasa indicando la ubicación de la memoria compartida en una aplicación de consola compilada para y en ejecución activa dentro del segundo sistema operativo. De manera notable, la información almacenada en la memoria compartida es información de superficie no presentada (por ejemplo, elementos primitivos geométricos) en lugar de los bits presentados como en el método 2000 de la FIGURA 20.
Por consiguiente, en el bloque 2124, el conjunto actualizado de superficies se presenta por el segundo sistema operativo (por ejemplo, mediante la aplicación de consola de acuerdo con el descriptor de archivos) desde la ubicación de memoria compartida para generar una segunda trama de gráficos que es sustancialmente idéntica a la primera trama de gráficos. En el bloque 2128, la segunda trama de gráficos se despliega en una segunda pantalla de aplicación de la primera aplicación en una segunda pantalla de un segundo ambiente de cómputo mediante la aplicación , de consola del segundo sistema operativo, de modo que la segunda pantalla de aplicación es sustancialmente idéntica a la primera pantalla de aplicación.
Es importante observar que una sobrecarga adicional puede involucrarse al duplicar la presentación en ambos sistemas operativos primero y segundo. Sin embargo, esta sobrecarga adicional puede ser importante en un número de circunstancias. Por ejemplo, donde las pantallas de diferentes ambientes de cómputo tienen características apreciablemente diferentes, puede ser deseable presentar la información de gráficos actualizada en contextos de presentación separados que son adecuados cada uno para la respectiva de las pantallas.
Los métodos de las FIGURAS 20 y 21 describen duplicado de ambiente cruzado de un contexto de gráficos con visualización activa de una aplicación que se ejecuta en el primer OS dentro del contexto de gráficos duplicado. Sin embargo, los métodos pueden utilizarse donde no se despliega activamente una aplicación dentro del contexto de gráficos. Por ejemplo, el contexto de gráficos puede desplegar una pantalla de inicio u otra característica (por ejemplo, pantalla de búsqueda, etc.) del primer OS. En estos casos, la información de superficie para el contexto de gráficos se actualiza por un componente del primer OS, y las otras etapas de los métodos de las FIGURAS 20 y 21 pueden realizarse para proporcionar el contexto de gráficos duplicado en la segunda pantalla de aplicación.
De manera notable, el duplicado de ambiente cruzado de un contexto de gráficos puede emplearse concurrentemente con la presentación de ambiente cruzado de una aplicación. Por ejemplo, un método de acuerdo con la FIGURA 20 o 21 puede utilizarse para duplicar el contexto de gráficos activo del espacio de interacción de usuario del dispositivo móvil en un segundo ambiente de usuario al mismo tiempo que una aplicación que se ejecuta en el primer OS se despliega dentro del segundo ambiente de usuario utilizando las técnicas para presentación de ambiente cruzado de una aplicación descrita en lo anterior. Con referencia a la FIGURA 8 para ilustración, el espacio de interacción de usuario del OS móvil puede desplegarse dentro de una primera ventana 882 de consola mientras una aplicación de OS móvil se despliega dentro de una segunda ventana 884 de consola dentro del espacio de interacción de usuario del OS de escritorio en la pantalla 844.
Disponer soporte de interacción de usuario para un contexto de gráficos duplicado puede realizarse sustancialmente de la misma forma que proporcionar soporte de interfaz de usuario para una aplicación de ambiente cruzado ilustrada en las FIGURAS 13, 14, 18, y/o 19. Específicamente, eventos de entrada pueden proporcionarse de una aplicación de consola del segundo OS en un dispositivo de entrada virtual. El primer OS puede aceptar eventos de entrada del dispositivo de entrada virtual a través de una cola de entrada extendida o no extendida.
Modalidades de Redirección de Ambiente Cruzado Las técnicas descritas en lo anterior proporcionan soporte de interacción de usuario de ambiente cruzado para aplicaciones y contextos de gráficos de un primer sistema operativo a través de un espacio de interacción de usuario de un segundo sistema operativo. Para facilitar un modelo de uso de ambiente cruzado transparente, las modalidades se dirigen a proporcionar acceso a aplicaciones y/o contextos duplicados de un primer sistema operativo desde el espacio de interacción de usuario del segundo sistema operativo.
Con referencia nuevamente a la FIGURA 8, un usuario puede interactuar con un primer OS (es decir, OS móvil, Android) a través de un primer espacio de interacción de usuario que incluye los componentes de interacción (es decir, pantallas de visualización 116 de pantalla táctil, otros dispositivos 118 de E/S) en el dispositivo móvil. El usuario también puede interactuar con un segundo OS (es decir, OS de escritorio, Hydroid) a través de un segundo espacio de interacción de usuario que incluye una pantalla 844 del ambiente 840 de terminal secundario. Como se describe en lo anterior, el conjunto de aplicaciones disponibles para (es decir, compilados para y cargados dentro del ambiente de ejecución) el OS 160 de escritorio pueden ser diferentes del que se encuentra disponible para el OS 130 móvil. Se dirigen modalidades para realizar aplicaciones de OS 130 móvil accesible dentro del espacio de interacción de usuario del OS 160 de escritorio al proporcionar iconos de menú o elementos de lista de menú dentro de menús del espacio de interacción de usuario del OS 160 de escritorio para aplicaciones disponibles en el OS 130 móvil.
La FIGURA 22 ilustra aspectos de redirección de ambiente cruzado, de acuerdo con varias modalidades. Dentro del ambiente 2200 de cómputo ilustrado en la FIGURA 22, un usuario interactúa con el OS 160 de escritorio a través del espacio 2202 de interacción de usuario de OS de escritorio. Dentro del espacio 2202 de interacción de usuario de OS de escritorio, la barra 2220 de menú incluye iconos o listas de aplicaciones disponibles. Para lanzar una aplicación, el usuario selecciona el nombre de aplicación o el icono de la barra de menú o de las listas desplegables o emergentes de la barra 2220 de menú. Tradicionalmente, la barra 2220 de menú incluye sólo elementos o iconos de menú para aplicaciones disponibles en el OS 160 de escritorio. Por ejemplo, elementos 2222, 2224, 2226, y/o 2228 de menú pueden ser aplicaciones disponibles en (es decir, compiladas para y cargar dentro del ambiente de ejecución) el OS 160 de escritorio. Modalidades de la invención se dirigen a proporcionar acceso de ambiente cruzado a aplicaciones y/o el contexto de gráficos del OS 130 móvil del espacio 2202 de interacción de usuario de OS de escritorio. Por ejemplo, los elementos 2232, 2234, 2236, 2237, y/o 2238 de menú pueden incluir aplicaciones disponibles en el OS 130 móvil y/o- el contexto de gráficos del OS 130 móvil.
El espacio 2202 de interacción de usuario de OS de escritorio se despliega en una pantalla dentro de un espacio de interacción de usuario (por ejemplo, ambiente 840 de terminal secundario) asociado con el OS 160 de escritorio. La barra 2220 de menú del OS 160 de escritorio incluye elementos 2222, 2224, 2226, y/o 2228 de menú asociados con aplicaciones compiladas para y cargadas en el OS 160 de escritorio (por ejemplo, compiladas para Hydroid/Linux y cargadas dentro del ambiente de ejecución de OS de Hydroid) . La barra 2220 de menú también incluye elementos 2234, 2236, 2237, y/o 2238 de menú asociados con aplicaciones compiladas para y cargadas en el OS 130 móvil (por ejemplo, compiladas para Android y cargadas dentro del Ambiente de ejecución de Android) . Cuando el usuario selecciona uno de los elementos 2234, 2236, y/o 2238 de menú, la aplicación asociada se lanza en el OS 130 móvil y se despliega dentro de una ventana de consola del OS 160 de escritorio, por ejemplo, dentro de la ventana 2216 del espacio 2202 de interacción de usuario de OS de escritorio. El elemento 2232 de menú puede asociarse con el Contexto de gráficos del OS móvil de modo que si el elemento 2232 de menú se selecciona, el contexto de gráficos del OS móvil se despliega dentro de una ventana de consola del OS 160 de escritorio .
La FIGURA 23 ilustra el flujo 2300 de proceso que puede emplearse para construir la barra 2220 de menú del OS 160 de escritorio. En la etapa 2302 del flujo 2300 de proceso, el OS 160 de escritorio consulta al OS 130 móvil para obtener una lista de aplicaciones disponibles. En una modalidad, un servicio de sistema o aplicación de lanzador del OS 160 de escritorio consulta un servicio del OS 130 móvil de todos los atajos de Aplicación de OS móvil lanzables. El OS 130 móvil responde con una lista de aplicaciones que se encuentran disponibles (es decir, atajos lanzables para aplicaciones de OS móvil disponibles) . La lista de aplicaciones disponibles puede incluir todas las aplicaciones disponibles en el OS 130 móvil (todas las aplicaciones cargadas y ejecutables en el OS 130 móvil) o subconjunto de aplicaciones de OS móvil disponibles. Por ejemplo, la lista puede incluir todas las aplicaciones que aparecen en la pantalla de menú de aplicación de la GUI de OS móvil. En la etapa 2304, el OS 160 de escritorio recibe la lista de aplicaciones del OS 130 móvil. La lista de aplicaciones regresadas por el OS 130 móvil incluye los nombres de paquetes de aplicaciones para cada aplicación enlistada, y también puede incluir nombres de aplicaciones e iconos para cada aplicación enlistada.
El OS 160 de escritorio crea los elementos de menú en la barra 2220 de menú para cada aplicación de la lista de aplicaciones al iterar sobre bloques 2306, 2308, y 2310. Para cada aplicación, el OS 160 de escritorio ejemplifica un icono para la aplicación en la barra 2220 de menú en el bloque 2306, asocia el icono con una aplicación de consola del OS 160 de escritorio en el bloque 2308, y asocia un parámetro que indica el nombre del paquete de la aplicación con el icono en el bloque 2310. La aplicación de consola se ejecuta en el OS 160 de escritorio y despliega información de gráficos para la aplicación dentro del OS 160 de escritorio, utilizando modalidades de la presentación de ambiente cruzado descrito en lo anterior. De esta manera, cuando un usuario selecciona el elemento de menú, la aplicación de consola se lanza en el OS 160 de escritorio, y el nombre del paquete de la aplicación se pasa a la aplicación de consola.
El OS 160 de escritorio puede desplegar los elementos de menú asociados con aplicaciones del OS 130 móvil en una variedad de formas. Los elementos de menú pueden desplegarse en la barra 2220 de menú, o en un menú desplegable que aparece cuando se selecciona un elemento de menú que indica que las aplicaciones de OS móvil se encuentran disponibles. Los elementos de menú pueden desplegarse utilizando iconos o sólo nombres de aplicaciones en la barra 2220 de menú o el menú desplegable. En una modalidad, el OS 160 de escritorio despliega una barra de menú separada para las aplicaciones de OS móvil. En otra modalidad, los elementos de menú asociados con aplicaciones de OS móvil aparecen dentro de la barra 2220 de menú de OS de escritorio a lo largo de o entremezclada con elementos de menú para las aplicaciones de OS de escritorio. Opcionalmente, los elementos de menú de OS móvil pueden encontrarse en un área 2230 de la barra 2220 de menú establecida fuera del delimitador 2240 o de otra manera identificable como incluyendo elementos de menú de OS móvil. La barra 2220 de menú puede incluir un elemento de menú para la pantalla activa del dispositivo móvil mismo, es decir, un elemento de menú que el usuario puede seleccionar para desplegar el espacio de interacción de usuario del OS móvil dentro de un ambiente de usuario del OS de escritorio de acuerdo con los métodos de las FIGURAS 20 y/o 21. En una modalidad, la aplicación de pantalla de inicio del OS móvil se regresa en la lista de aplicaciones disponibles y se proporciona con un elemento de menú asociado.
Cuando el usuario selecciona un elemento de menú asociado con una aplicación de OS móvil, el OS 160 de escritorio lanza la aplicación de consola asociada con el elemento de menú y pasa el nombre del paquete de la aplicación a la aplicación de consola. La aplicación de consola despliega una ventana dentro del espacio 2202 de interacción de usuario de OS de escritorio (es decir, la aplicación de consola se despliega dentro del sistema de gráficos del OS de escritorio) . La aplicación de consola envía una solicitud al OS 130 móvil para lanzar la aplicación (es decir, solicita al OS 130 móvil que lance el nombre del paquete de aplicación proporcionado en la aplicación de consola como parámetro de ejecución) y despliega la trama de gráficos para la aplicación a través de la aplicación de consola. La aplicación puede o no ejecutarse actualmente en el OS 130 móvil. Si la aplicación se ejecuta actualmente en el OS 130 móvil, la pantalla de la aplicación puede moverse del OS 130 móvil al espacio 2202 de interacción de usuario de OS de escritorio o desplegarse en una pantalla del dispositivo móvil y el espacio 2202 de interacción de usuario al mismo tiempo. La pantalla de gráficos de aplicación y el soporte de interacción de usuario pueden lograrse por la aplicación utilizando cualquiera de la presentación de ambiente cruzado y las técnicas de soporte de interfaz de usuario de ambiente cruzado descritas en lo anterior.
La FIGURA 24 ilustra el flujo 2400 de proceso seguido por el OS 130 móvil para lanzar una aplicación en respuesta al usuario que selecciona un elemento de menú asociado con una aplicación de OS móvil en la barra 2220 de menú de la GUI 880 de OS de escritorio. El flujo .2400 de proceso comienza en el bloque 2402 cuando el OS 130 móvil recibe la solicitud del OS 160 de escritorio para lanzar una aplicación compilada para el OS móvil y cargada dentro del ambiente de ejecución del OS móvil para visualización en el OS de escritorio. En el bloque 2404, el OS móvil asigna el ID de pantalla virtual no utilizado. Por ejemplo, el sistema de gráficos del OS móvil puede mantener una lista de ID de pantalla virtual y asignar el ID de pantalla virtual no utilizado al proceso de la primera aplicación. En el bloque 2406, el OS móvil lanza la primera aplicación dentro del OS móvil (es decir, se ejecuta en el OS móvil). En el bloque 2408, el OS 130 móvil asocia notificaciones de actualización para la primera aplicación con la pantalla virtual. Por ejemplo, el servidor de gráficos del OS móvil puede mantener una lista de aplicaciones y sus pantallas virtuales asociadas. En los bloques 2410 y 2412, el OS móvil mantiene la información de gráficos para la primera aplicación al monitorear los gráficos de aplicación para la primera aplicación y notificar una aplicación de consola del OS de escritorio cuando la información de gráficos de aplicación de la primera aplicación se actualiza. Los bloques 2410 y 2412 pueden responder manteniendo los gráficos de aplicación de las aplicaciones de ambiente cruzado de acuerdo con los métodos de las FIGURAS 10, 12, 16 y/o 17.
La descripción anterior se ha presentado para propósitos de ilustración y descripción. Además, la descripción no se pretende para limitar las modalidades de la invención a la forma descrita en la presente. Aunque un número de aspectos ejemplares y modalidades se ha discutido en lo anterior, aquellos de experiencia en la técnica apreciarán ciertas variaciones, modificaciones, permutaciones, adiciones y sub-combinaciones de las mismas.
Las diversas operaciones de los métodos descritos en lo anterior pueden realizarse por cualquier medio adecuado capaz de realizar las funciones correspondientes. Los medios pueden incluir varios componentes de hardware y/o software y/o módulos, que incluyen, pero no se limitan a, un circuito, un circuito integrado de aplicación especifica (ASIC) , o procesador .
Los diversos bloques lógicos ilustrativos, módulos y circuitos descritos pueden implementarse o realizarse con un procesador de propósito general, un procesador digital de señales (DSP) , un ASIC, una señal de disposición de puerta programable de campo (FPGA) , u otro dispositivo lógico programable (PLD) , puerta discreta, o lógica de transistor, componentes de hardware discreto, o cualquier combinación de los mismos diseñada para realizar las funciones descritas en la presente. Un procesador de propósito general puede ser un microprocesador, pero alternativamente, el procesador puede ser cualquier procesador comercialmente disponible, controlador, microcontrolador, o máquina de estado. Un procesador también puede implementarse como combinación de dispositivos de cómputo, por ejemplo, una combinación de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o más microprocesadores junto con un núcleo de DSP, o cualquier otra configuración.
Las etapas de un método o algoritmo descritos junto con la presente descripción, pueden representarse directamente en hardware, en un módulo de software ejecutado por un procesador, o en una combinación de los dos. Un módulo de software puede residir en cualquier forma de medio de almacenamiento tangible. Algunos ejemplos del medio de almacenamiento que pueden utilizarse incluyen memoria de acceso aleatorio (RAM) , memoria de sólo lectura (ROM) , memoria flash, memoria EPROM, memoria EEPROM, registros, un disco duro, un disco removible, un CD-ROM, etc. Un medio de almacenamiento puede acoplarse con un procesador de modo que el procesador pueda leer información de, y escribir información en, el medio de almacenamiento. Alternativamente, el medio de almacenamiento puede ser parte integral del procesador. Un módulo de software puede ser una sola instrucción o muchas instrucciones, y puede distribuirse sobre diferentes segmentos de código diversos, entre diferentes programas, y a través de múltiples medios de almacenamiento.
Los métodos descritos en la presente comprenden una o más acciones para lograr el método descrito. El método y/o acciones pueden intercambiarse entre si sin apartarse del alcance de las reivindicaciones. En otras palabras, a menos que se especifique un orden especifico de acciones, el orden y/o uso de acciones específicas pueden modificarse sin apartarse del alcance de las reivindicaciones.
Las funciones descritas pueden implementarse en hardware, software, firmware, o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse como una o más instrucciones en un medio legible por computadora tangible. Un medio de almacenamiento puede ser cualquier medio tangible disponible que pueda accederse por una computadora. A manera de ejemplo, y no de limitación, tal medio legible por computadora puede comprender RAM, ROM, EEPROM, CD-ROM, u otro almacén de disco óptico, almacén de disco magnético, u otros dispositivos de almacenamiento magnético, o cualquier otro medio tangible que pueda utilizarse para transportar o almacenar código de programación deseado en forma de instrucciones o estructuras de datos y que pueda accederse por una computadora. Disquete y disco, como se utiliza en la presente, incluyen disco compacto (CD) , disco láser, disco óptico, disco versátil digital (DVD), disco flexible, y disco Blu-ray® donde los disquetes normalmente reproducen datos de manera magnética, mientras los discos reproducen datos de manera óptica con láser .
De esta manera, un producto de programa de computadora puede realizar operaciones presentadas en la presente. Por ejemplo, tal producto de programa de computadora puede ser un medio tangible legible por computadora que tiene instrucciones almacenadas de manera tangible (y/o codificadas) en el mismo, las instrucciones se pueden ejecutar por uno o más procesadores para realizar las operaciones descritas en la presente. El producto de programa de computadora puede incluir material de paquetes.
Software o instrucciones también pueden transmitirse sobre un medio de transmisión. Por ejemplo, el software puede transmitirse desde un sitio web, servidor, u otra fuente remota utilizando un medio de transmisión tal como un cable coaxial, cable de fibra óptica, par torcido, linea de suscriptor digital (DSL) , o tecnología inalámbrica tal como infrarrojo, radio o microondas.
Además, módulos y/u otros medios adecuados para realizar los métodos y técnicas descritos en la presente pueden descargarse y/o de otra manera obtenerse por una terminal de usuario y/o estación base cuando sea aplicable. Por ejemplo, tal dispositivo puede acoplarse con un servidor para facilitar la transferencia de medios para realizar los métodos descritos en la presente. Alternativamente, varios métodos descritos en la presente pueden proporcionarse mediante medios de almacenamiento (por ejemplo, RAM, ROM, medio de almacenamiento físico tal como CD o disco flexible, etc.), de modo que una terminal de usuario y/o estación base pueda obtener los diversos métodos tras acoplar o proporcionar el medio de almacenamiento al dispositivo. Además, cualquier otra técnica adecuada para proporcionar los métodos y técnicas descritos en la presente a un dispositivo pueden utilizarse.
Otros ejemplos e implementaciones se encuentran dentro del alcance y espíritu de la descripción y reivindicaciones anexas. Por ejemplo, debido a la naturaleza del software, las funciones descritas en lo anterior pueden implementarse utilizando software ejecutado por un procesador, hardware, firmware, cableado físico, o combinaciones de cualquiera de éstos. Las características que implementan las funciones también pueden ubicarse físicamente en varias posiciones, incluyendo distribuidas de modo que porciones de funciones se implementen en diferentes ubicaciones físicas. También, como se utiliza en la presente, en las reivindicaciones se incluye "o" que se utiliza en una lista de elementos precedidos por "al menos uno" indica una lista disyuntiva de modo que, por ejemplo, una lista de "por lo menos una de A, B, o C" significa A o B o C o AB o AC o BC o ABC (es decir, A y B y C) . Además, el término "ejemplar" no significa qüe el ejemplo descrito se prefiera o sea mejor que otros ejemplos.
Varios cambios, sustituciones y alteraciones a las técnicas descritas en la presente pueden hacerse sin apartarse de la tecnología de las enseñanzas como se define por las reivindicaciones anexas. Además, el alcance de la descripción y las reivindicaciones no se limitará a los aspectos particulares del proceso, máquina, manufactura, composiciones de materia, medios, métodos y acciones descritos en lo anterior. Procesos, máquinas, manufactura, composiciones de materia, medios, métodos o acciones, que posiblemente existan o posteriormente se desarrollen que realicen sustancialmente la misma función o logren sustancialmente el mismo resultado que los aspectos correspondientes descritos en la presente pueden utilizarse. Por consiguiente, las reivindicaciones anexas incluyen dentro de su alcance tales procesos, máquinas, manufactura, composiciones de materia, medios, métodos o acciones.

Claims (15)

REIVINDICACIONES
1. Un método caracterizado porque comprende: mantener la visualización de gráficos de aplicación para una primera aplicación y una segunda aplicación, ambas compiladas para y en ejecución concurrente activa dentro de un primer sistema operativo, al realizar de manera iterativa las etapas que comprenden: calcular actualizaciones para superficies de la primera aplicación, utilizando el primer sistema operativo; presentar las superficies actualizadas de la primera aplicación utilizando el primer sistema operativo para generar una primera trama de gráficos en una primera ubicación de memoria; calcular actualizaciones para superficies de la segunda aplicación utilizando el primer sistema operativo; almacenar las superficies actualizadas de la segunda aplicación en una segunda ubicación de memoria, la segunda ubicación de memoria es una ubicación de memoria compartida que se puede acceder por el primer sistema operativo y un segundo sistema operativo que se ejecuta de manera concurrente en un módulo central compartido; y presentar las superficies actualizadas de la segunda aplicación utilizando una aplicación de consola del segundo sistema operativo para generar una segunda trama de gráficos en una tercera ubicación de memoria.
2. El método de conformidad con la reivindicación 1, caracterizado además porque comprende: desplegar la primera trama de gráficos desde la primera ubicación de memoria hasta una pantalla de un primer ambiente de cómputo asociado con el primer sistema operativo; y desplegar la segunda trama de gráficos desde la tercera ubicación de memoria hasta una pantalla de un segundo ambiente de cómputo asociado con el segundo sistema operativo
3. El método de conformidad con la reivindicación 2, caracterizado porque la segunda trama de gráficos se despliega desde la tercera ubicación de memoria hasta una pantalla de un segundo ambiente de cómputo asociado con el segundo sistema operativo mediante la aplicación de consola.
4. El método de conformidad con la reivindicación 1, caracterizado además porque comprende recibir, mediante la aplicación de consola, una notificación de escalado que indica que las superficies actualizadas se encuentran disponibles en la segunda ubicación de memoria.
5. El método de conformidad con la reivindicación 4, caracterizado porque la recepción de la notificación de escalado incluye recibir un descriptor de archivos en la segunda ubicación de memoria.
6. El método de conformidad con la reivindicación 4, caracterizado además porque comprende recibir una referencia a la segunda ubicación de memoria al mapear el descriptor de archivos en el espacio de proceso de la aplicación de consola.
7. El método de conformidad con la reivindicación 6, caracterizado porque presentar las superficies actualizadas de la segunda aplicación incluye presentar la segunda ubicación de memoria por referencia.
8. El método de conformidad con la reivindicación 1, caracterizado además porque comprende: ejemplificar un objeto presentador en la aplicación de consola; y registrar, en un servidor de gráficos del primer sistema operativo, una interfaz remota del objeto presentador para recibir notificaciones de escalado para las superficies de la primera aplicación.
9. El método de conformidad con la reivindicación 1, caracterizado porque la segunda aplicación es incompatible con un servidor de gráficos del segundo sistema operativo.
10. El método de conformidad con la reivindicación 1, caracterizado porque presentar las superficies actualizadas de la segunda aplicación incluye componer las superficies actualizadas por un orden de capa.
11. Un dispositivo de cómputo móvil caracterizado porque comprende: una primera aplicación y una segunda aplicación en ejecución concurrente activa dentro de un primer sistema operativo; una primera superficie de gráficos asociada con la primera aplicación; un servidor de gráficos del primer sistema operativo que puede operar para presentar la primera superficie de gráficos para generar una primera trama de gráficos en una primera ubicación de memoria; una segunda superficie de gráficos asociada con la segunda aplicación, la segunda superficie de gráficos almacenada en una segunda ubicación de memoria, la segunda ubicación de memoria es una ubicación de memoria compartida que se puede acceder por el primer sistema operativo y un segundo sistema operativo que se ejecuta de manera concurrente en un módulo central compartido; y una aplicación de consola que se ejecuta dentro del segundo sistema operativo, la aplicación de consola se puede operar para presentar la segunda superficie de gráficos para generar una segunda trama de gráficos en una tercera ubicación de memoria.
12. El dispositivo de cómputo móvil de conformidad con la reivindicación 11, caracterizado además porque comprende un objeto presentador ejemplificado por la aplicación de consola que incluye un método remoto para presentar la segunda superficie de gráficos para generar la segunda trama de gráficos.
13. El dispositivo de cómputo móvil de conformidad con la reivindicación 11, caracterizado porque la aplicación de consola recibe una notificación de escalado del servidor de gráficos del primer sistema operativo que indica que la segunda superficie de gráficos se ha actualizado.
14. El dispositivo de cómputo móvil de conformidad con la reivindicación 11, caracterizado porque un servidor de gráficos del segundo sistema operativo es un servidor de gráficos tipo X-Windows y donde la segunda aplicación utiliza una biblioteca de gráficos del primer sistema operativo que es incompatible con el servidor de gráficos tipo X-Windows del segundo sistema operativo.
15. Un dispositivo de cómputo caracterizado porque que incluye un medio legible por computadora que almacena instrucciones para un procesador físico, las instrucciones, cuando se ejecutan, provocan que el procesador realice las etapas de: mantener la visualización de gráficos de aplicación para una primera aplicación y una segunda aplicación, ambas compiladas para y en ejecución concurrente activa dentro de un primer sistema operativo, al realizar de manera iterativa las etapas que comprenden: calcular actualizaciones para superficies de la primera aplicación, utilizando el primer sistema operativo; presentar las superficies actualizadas de la primera aplicación utilizando el primer sistema operativo para generar una primera trama de gráficos en una primera ubicación de memoria; calcular actualizaciones para superficies de la segunda aplicación utilizando el primer sistema operativo; almacenar las superficies actualizadas de la segunda aplicación en una segunda ubicación de memoria, la segunda ubicación de memoria es una ubicación de memoria compartida que se puede acceder por el primer sistema operativo y un segundo sistema operativo que se ejecuta de manera concurrente en un módulo central compartido; y presentar las superficies actualizadas de la segunda aplicación utilizando una aplicación de consola del segundo sistema operativo para generar una segunda trama de gráficos en una tercera ubicación de memoria.
MX2013003515A 2010-10-01 2011-09-29 Presentacion remota instantanea. MX2013003515A (es)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US38911710P 2010-10-01 2010-10-01
US201161507206P 2011-07-13 2011-07-13
US201161507199P 2011-07-13 2011-07-13
US201161507209P 2011-07-13 2011-07-13
US201161507203P 2011-07-13 2011-07-13
US201161507201P 2011-07-13 2011-07-13
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
MX2013003515A true MX2013003515A (es) 2013-09-26

Family

ID=45893741

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2013003515A MX2013003515A (es) 2010-10-01 2011-09-29 Presentacion remota instantanea.

Country Status (7)

Country Link
US (1) US9047102B2 (es)
EP (1) EP2622463B1 (es)
JP (1) JP2013546043A (es)
CN (1) CN103339600B (es)
BR (1) BR112013007342A2 (es)
MX (1) MX2013003515A (es)
WO (1) WO2012044738A2 (es)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8933949B2 (en) 2010-10-01 2015-01-13 Z124 User interaction across cross-environment applications through an extended graphics context
US8819705B2 (en) 2010-10-01 2014-08-26 Z124 User interaction support across cross-environment applications
US20130076592A1 (en) 2011-09-27 2013-03-28 Paul E. Reeves Unified desktop docking behavior for visible-to-visible extension
US8990712B2 (en) 2011-08-24 2015-03-24 Z124 Unified desktop triad control user interface for file manager
US9268518B2 (en) 2011-09-27 2016-02-23 Z124 Unified desktop docking rules
US8966379B2 (en) 2010-10-01 2015-02-24 Z124 Dynamic cross-environment application configuration/orientation in an active user environment
US20130104062A1 (en) 2011-09-27 2013-04-25 Z124 Unified desktop input segregation in an application manager
US9152582B2 (en) 2010-10-01 2015-10-06 Z124 Auto-configuration of a docked system in a multi-OS environment
US9047102B2 (en) 2010-10-01 2015-06-02 Z124 Instant remote rendering
US20130024778A1 (en) 2011-07-13 2013-01-24 Z124 Dynamic cross-environment application configuration/orientation
US8990713B2 (en) 2011-09-27 2015-03-24 Z124 Unified desktop triad control user interface for an application manager
US9715252B2 (en) 2011-08-24 2017-07-25 Z124 Unified desktop docking behavior for window stickiness
US20130024812A1 (en) 2011-07-13 2013-01-24 Z124 Foreground/background assortment of hidden windows
US9405459B2 (en) 2011-08-24 2016-08-02 Z124 Unified desktop laptop dock software operation
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
US9678624B2 (en) 2011-09-27 2017-06-13 Z124 Unified desktop triad control user interface for a phone manager
ES2310689T3 (es) 2002-12-27 2009-01-16 Advanced Plastics Technologies Luxembourg S.A. Aparato y procedimiento para la fabricacion y llenado de bolsas flexibles.
US8907904B2 (en) 2010-10-01 2014-12-09 Z124 Smartpad split screen desktop
WO2021161104A1 (en) 2020-02-12 2021-08-19 Monday.Com Enhanced display features in collaborative network systems, methods, and devices
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
WO2021144656A1 (en) 2020-01-15 2021-07-22 Monday.Com Digital processing systems and methods for graphical dynamic table gauges in collaborative work systems
US8919848B2 (en) 2011-11-16 2014-12-30 Flextronics Ap, Llc Universal console chassis for the car
WO2012044546A2 (en) 2010-10-01 2012-04-05 Imerj, Llc Auto-waking of a suspended os in a dockable system
US8842080B2 (en) 2010-10-01 2014-09-23 Z124 User interface with screen spanning icon morphing
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
US20130104051A1 (en) 2011-09-27 2013-04-25 Z124 Unified desktop big brother application pools
US20160124698A1 (en) 2011-08-24 2016-05-05 Z124 Unified desktop triad control user interface for an application launcher
US8570318B2 (en) 2011-08-25 2013-10-29 Intel Corporation Collaborative graphics rendering using mobile devices to support remote display
US9703468B2 (en) 2011-09-27 2017-07-11 Z124 Unified desktop independent focus in an application manager
US20130080899A1 (en) 2011-09-27 2013-03-28 Paul E. Reeves Unified desktop big brother applications
US20160054757A1 (en) 2012-02-29 2016-02-25 Z124 Unified desktop docking flow
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
US9164544B2 (en) 2011-12-09 2015-10-20 Z124 Unified desktop: laptop dock, hardware configuration
JP5788075B2 (ja) * 2012-02-20 2015-09-30 三菱電機株式会社 グラフィックスデータ処理装置及びグラフィックスデータ処理システム
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 中国电信股份有限公司 在安卓终端上实现虚拟桌面屏幕分辨率自动适配的方法和系统
US8947447B1 (en) 2014-02-13 2015-02-03 Raycast Systems, Inc. Computer hardware architecture and data structures for ray 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 삼성전자주식회사 듀얼 디스플레이를 가지는 전자 장치 및 이의 운용 방법
US20180137840A1 (en) * 2016-11-17 2018-05-17 Fuji Xerox Co., Ltd. Terminal apparatus and non-transitory computer readable medium
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的方法
US11361156B2 (en) 2019-11-18 2022-06-14 Monday.Com Digital processing systems and methods for real-time status aggregation in collaborative work systems
EP4062313A1 (en) 2019-11-18 2022-09-28 Monday.com Ltd. Collaborative networking systems, methods, and devices
IL297858A (en) 2020-05-01 2023-01-01 Monday Com Ltd Digital processing systems and methods for improved networking and collaborative work management 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显示器中的显示方法及装置
US11475215B2 (en) 2021-01-14 2022-10-18 Monday.com Ltd. Digital processing systems and methods for dynamic work document updates using embedded in-line links 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)

* Cited by examiner, † Cited by third party
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
US9047102B2 (en) 2010-10-01 2015-06-02 Z124 Instant remote rendering
US8966379B2 (en) 2010-10-01 2015-02-24 Z124 Dynamic cross-environment application configuration/orientation in an active user environment
US20130024778A1 (en) 2011-07-13 2013-01-24 Z124 Dynamic cross-environment application configuration/orientation
US8726294B2 (en) 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API
US9152582B2 (en) 2010-10-01 2015-10-06 Z124 Auto-configuration of a docked system in a multi-OS environment
US8933949B2 (en) 2010-10-01 2015-01-13 Z124 User interaction across cross-environment applications through an extended graphics context
US8819705B2 (en) 2010-10-01 2014-08-26 Z124 User interaction support across cross-environment applications
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
JPWO2003077097A1 (ja) 2002-03-08 2005-07-07 三菱電機株式会社 移動体通信装置、移動体通信装置の表示制御方法、並びに、そのプログラム
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
JP2005539326A (ja) 2002-09-17 2005-12-22 キム、シハン マルチディスプレイ装置
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
US8907904B2 (en) 2010-10-01 2014-12-09 Z124 Smartpad split screen desktop
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
WO2005119404A1 (en) 2004-06-01 2005-12-15 Beech Technology Incorporated Portable, folding and separable multi-display computing system
JP2005346244A (ja) 2004-06-01 2005-12-15 Nec Corp 情報表示装置及びその操作方法
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
JP2008513869A (ja) 2004-09-21 2008-05-01 ノキア コーポレイション 折り畳み式電子装置
US20060082581A1 (en) 2004-10-14 2006-04-20 Microsoft Corporation Encoding for remoting graphics to decoder device
JPWO2006051669A1 (ja) 2004-11-09 2008-08-07 シャープ株式会社 携帯情報端末
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
US8195624B2 (en) 2005-06-30 2012-06-05 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 キヤノン株式会社 画像処理装置、その制御方法及びプログラム
US20100013863A1 (en) 2006-10-27 2010-01-21 Ciaran Harris 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 日本電気株式会社 仮想装置構成システム、及びその方法
WO2008115012A1 (en) 2007-03-20 2008-09-25 Sanggyu Lee Movable virtual machine image
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
JP5596343B2 (ja) 2007-04-13 2014-09-24 日本電気株式会社 仮想計算機システムおよびその最適化方法
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
WO2009039376A2 (en) * 2007-09-20 2009-03-26 C & S Operations, Inc. Computer system with tunneling
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
WO2009097555A2 (en) 2008-01-30 2009-08-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
DE602008005865D1 (de) 2008-05-29 2011-05-12 Lg Electronics Inc Transparente Anzeige und Betriebsverfahren dafür
US8230180B2 (en) 2008-06-11 2012-07-24 Samsung Electronics Co., Ltd. Shared memory burst communications
CA2715837A1 (en) 2008-06-12 2009-12-17 Canova Technologies Limited Dual screen display system
US8359372B2 (en) 2008-06-29 2013-01-22 Microsoft Corporation Automatic transfer of information through physical docking of devices
US20090322690A1 (en) 2008-06-30 2009-12-31 Nokia Corporation Screen display
JP5522041B2 (ja) 2008-06-30 2014-06-18 日本電気株式会社 情報処理装置、表示制御方法、及びプログラム
US20100007603A1 (en) 2008-07-14 2010-01-14 Sony Ericsson Mobile Communications Ab Method and apparatus for controlling display orientation
EP2309369B1 (en) 2008-07-25 2016-09-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
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
US8860632B2 (en) 2008-09-08 2014-10-14 Qualcomm Incorporated Multi-panel device with configurable interface
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
US8933874B2 (en) 2008-09-08 2015-01-13 Patrik N. Lundqvist Multi-panel electronic device
US8803816B2 (en) 2008-09-08 2014-08-12 Qualcomm Incorporated Multi-fold mobile device with configurable interface
US20100064228A1 (en) 2008-09-11 2010-03-11 Ely Tsern Expandable system architecture comprising a handheld computer device that dynamically generates 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
US8355755B2 (en) 2009-03-03 2013-01-15 Lg Electronics Inc. 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
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
US8194001B2 (en) 2009-03-27 2012-06-05 Microsoft Corporation Mobile computer device display postures
US7864517B2 (en) 2009-03-30 2011-01-04 Microsoft Corporation Mobile computer device binding feedback
US20120026069A1 (en) 2009-03-31 2012-02-02 Yasunari Ohsaki Mobile terminal device, and control program and multiple display screen control method therefor
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
US8868899B2 (en) 2009-07-20 2014-10-21 Motorola Mobility Llc System and method for switching between environments in a 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
US9389877B2 (en) 2009-07-20 2016-07-12 Google Technology Holdings LLC Multi-environment operating system
US9367331B2 (en) * 2009-07-20 2016-06-14 Google Technology Holdings LLC 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
CN102918490B (zh) 2010-04-01 2014-07-23 思杰系统有限公司 与在平板计算装置的虚拟桌面内显示的远程应用交互
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
US8842080B2 (en) 2010-10-01 2014-09-23 Z124 User interface with screen spanning icon morphing
WO2012044546A2 (en) 2010-10-01 2012-04-05 Imerj, Llc Auto-waking of a suspended os in a dockable system
US8919848B2 (en) 2011-11-16 2014-12-30 Flextronics Ap, Llc Universal console chassis for the car
US20130312106A1 (en) 2010-10-01 2013-11-21 Z124 Selective Remote Wipe
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
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
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
US8842057B2 (en) 2011-09-27 2014-09-23 Z124 Detail on triggers: transitional states

Also Published As

Publication number Publication date
EP2622463A2 (en) 2013-08-07
CN103339600A (zh) 2013-10-02
JP2013546043A (ja) 2013-12-26
EP2622463B1 (en) 2019-12-25
US20120086717A1 (en) 2012-04-12
CN103339600B (zh) 2017-10-31
WO2012044738A3 (en) 2012-06-21
US9047102B2 (en) 2015-06-02
WO2012044738A2 (en) 2012-04-05
BR112013007342A2 (pt) 2016-11-08
EP2622463A4 (en) 2015-03-04

Similar Documents

Publication Publication Date Title
EP2622463B1 (en) Instant remote rendering
US8683496B2 (en) Cross-environment redirection
US8819705B2 (en) User interaction support across cross-environment applications
US8933949B2 (en) User interaction across cross-environment applications through an extended graphics context
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
FG Grant or registration