Multi-monitor full screen mode in a windowing environment
Mechanisms for implementing a multi-monitor full screen mode in an application module are disclosed. An application module determines a number (N) of monitors that are coupled to a plurality of video ports of a device. The application module directs a window management module (WMM) that is independent of the application module to display at least one cover window that has dimensions coextensive with dimensions of respective maximum display areas of the N monitors. A primary monitor of the N monitors is determined, and a full screen display area associated with the primary monitor is determined. A main application window of the application module is sized to have dimensions that are at least coextensive with dimensions of the full screen display area, and the WMM is directed to display the main application window on the at least on primary monitor.
Latest LOCKHEED MARTIN CORPORTATION Patents:
The embodiments relate to a multi-tasking windowing environment, and in particular to implementing a multi-monitor full screen mode in a windowing environment of a device.
BACKGROUNDMany computers implement an operating system that allows multiple application programs, referred to herein as application modules, to execute concurrently. Such an operating system is sometimes referred to as a multi-tasking operating system. A number of popular operating systems offer windowing environments wherein a graphical user interface allows a user of the computer to interact with concurrently executing application modules in an intuitive manner. Typically, the user interacts with application modules executing on the computer via one or more user interface windows, the content of which is determined by the application module with which the window is associated.
An executing application module may utilize one, or multiple, windows to interact with the user. The creation, movement and closing of windows is typically managed by the operating system in response to requests from the application module. The operating system maintains information about each window associated with each application module, and determines what should be displayed to the user on a display device at any given time based on the current status of the windows associated with the application modules.
The window or windows displayed to the user at any given point in time may be based in part on activities of the user, such as user input that results in a particular window being the active window. Generally, the operating system may determine, for example, which windows are hidden behind other windows, and thus do not need to be displayed, which windows may overlap other windows, which windows should be displayed in their entirety, whether portions of the desktop should be displayed where no window is located over the desktop, and based on these determinations and perhaps more, the operating system communicates with graphics hardware, sometimes referred to as a graphics card, to direct the graphics card to display the appropriate image on the monitor. This process may occur hundreds of times each second, and collectively implement a real-time multi-tasking windowing environment that can be changed dynamically in response to either input received from the user, or in response to input received from application modules.
For performance purposes and other reasons, most graphic cards and operating systems allow an operating mode wherein the application module, rather than the operating system, is responsible for what is drawn (sometimes referred to as “displayed”) on the monitor. This mode is sometimes referred to as “full screen mode.” When an application module enters full screen mode, the application module is responsible for providing the information to the graphics card that identifies what will be displayed to the user. Full screen mode is frequently used, for example, by gaming and simulation application modules that require high frame rates and desire complete control over the imagery displayed to the user, including, for example, the ability to completely fill the display area of a monitor with high-resolution imagery.
The use of multiple monitors is increasingly popular with users. Current operating systems essentially expand the operating system desktop to fit the number of monitors in use, and allow users to move windows about the desktop as desired, including crossing monitor borders. The use of full screen mode in conjunction with multiple monitors, however, can be challenging to implement for a developer of an application, and the behavior of certain activities, such as what occurs when an application gains or loses focus, can be poorly defined depending on the operating system at issue. Moreover, switching between windows mode and full screen mode, especially when multiple monitors are in use, can be complex for a developer of an application module, can cause substantial delays for the user as the application module is obtaining control of the monitor or monitors from the operating system, and can be implemented differently from application module to application module, causing an inconsistent experience for the user.
Accordingly, there is a need for a multi-monitor full screen mode that provides the benefits of conventional full screen mode, but eliminates the need for the application module to assume complete responsibility for controlling the display of imagery, and that leverages the operating system to manage the multi-monitor full screen mode and thereby implement predictable windowing behavior.
SUMMARYThe embodiments relate to mechanisms for implementing a multi-monitor full screen mode in an application module on a device. The embodiments provide for the functionality of a conventional full screen mode, but leverage an independent window management module (WMM) to maintain the windows of the application module, to alleviate the complexities otherwise associated with directly maintaining the graphics buffers associated with multiple monitors. The embodiments allow, among other features, plug-in modules to generate child windows which may be displayed during full screen mode along with other windows of the application module.
In one embodiment, a computer-implemented method for implementing a multi-monitor full screen mode in an application module is provided. The method includes determining, by the application module, that the multi-monitor full screen mode is requested. The multi-monitor full screen mode may be determined based on real-time user input, or based on a configuration file, for example. A number (N) of monitors that are coupled to a plurality of video ports of the device are determined. Each monitor has a respective maximum display area. The respective maximum display area encompasses the entire screen of the respective monitor. The application module directs a WMM that is independent of the application module to display at least one cover window that has dimensions coextensive in size with dimensions of the maximum display areas of the N monitors. The cover window may, for example, be a uniform color, such as black, and may overlay the windows associated with all application modules other than the application module. At least one primary monitor of the N monitors is determined, and a full screen display area associated with the primary monitor is determined. A main application window of the application module is sized to have dimensions that are at least coextensive with dimensions of the full screen display area associated with the primary monitor, and the WMM is directed to display the main application window on top of the cover window.
Among other features, the present embodiments provide a multi-monitor full screen mode that appears to a user as a conventional full screen mode, but eliminates the need for the application module to communicate directly with a graphics card, and instead leverages the WMM of the device to manage the windows associated with the application module.
Those skilled in the art will appreciate the scope of the present disclosure and realize additional aspects thereof after reading the following detailed description of the preferred embodiments in association with the accompanying drawing figures.
The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the disclosure, and together with the description serve to explain the principles of the disclosure.
The embodiments set forth below represent the necessary information to enable those skilled in the art to practice the embodiments and illustrate the best mode of practicing the embodiments. Upon reading the following description in light of the accompanying drawing figures, those skilled in the art will understand the concepts of the disclosure and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims.
The embodiments relate to mechanisms for implementing a multi-monitor full screen mode in an application module on a device. The embodiments provide for the functionality of a conventional full screen mode, but leverage a window management monitor (WMM) to maintain the windows of the application module, to alleviate the complexities otherwise associated with directly maintaining the graphics buffers associated with multiple monitors. The embodiments allow, among other features, plug-in modules to generate child windows which may be displayed during multi-monitor full screen mode along with other windows of the application module.
Prior to delving into the details of the embodiments, for purposes of context, conventional mechanisms for implementing a full screen mode will be discussed.
The device 10 also includes a centralized WMM 16 that is configured to manage user interface (UI) windows 18-1-18-5 (generally, windows 18) that are associated with one or more of the application modules 14. The windows 18 are visually depicted to a user 20 on one or more of a plurality of monitors 22-1-22-2 (generally, monitors 22). While only two monitors 22 are illustrated, the embodiments have applicability to any number of monitors 22. While the WMM 16 is illustrated as being part of the operating system 12, the embodiments are not so limited, and can operate in conjunction with a WMM 16 that is independent of the operating system 12. The WMM 16 is independent of the application modules 14, such that the WMM 16 has a different codebase than the application modules 14.
Each monitor 22 has an associated maximum display area 24 that is a function of the size of the screen of the monitor 22. Thus, the monitor 22-1 has a maximum display area 24-1, and the monitor 22-2 has a maximum display area 24-2. A window 18 may be coextensive with a maximum display area 24 of a monitor 22, and thus completely fill the screen of the monitor 22, or, as illustrated, may be of dimensions smaller than the maximum display area 24 of a monitor 22.
In operation, an application module 14 may communicate with the WMM 16 to generate and display a window 18 on a monitor 22. The particular form, or protocol, of communication may differ depending on the particular WMM 16, but generally, the application module 14 directs the WMM 16 to generate a particular window 18, and provides the WMM 16 with various attributes of the window 18, such as size, width and height, location, content, and the like. The WMM 16 maintains a window list 26 that contains structures, such as window entries 28-1-28-5, that correspond to the windows 18-1-18-5. The WMM 16 determines, based on various information, including the attributes of the windows 18 at a given instant in time, what should be displayed to the user 20 on the monitors 22. Specifically, the WMM 16 determines which windows 18 may be entirely hidden behind another window 18, which windows 18 may be partially occluded by another window 18, which windows 18 may be topmost windows and thus visible in their entirety. Additionally, the WMM 16 may take into consideration a desktop 30 that is visually depicted to the user 20, to the extent the desktop 30 is not overlayed by one or more windows 18. The desktop 30 may span multiple monitors 22.
Based on such information, the WMM 16 determines what, at that particular instant in time, should be visually depicted to the user 20. The WMM 16 communicates data based on this determination to a graphics card 32. The graphics card 32 includes memory buffers dedicated to each monitor 22, including a front buffer 34-1 and back buffer 36-1 associated with the monitor 22-1, and a front buffer 34-2 and back buffer 36-2 associated with the monitor 22-2. The WMM 16 identifies to the graphics card 32 what should be rendered in such front buffers 34 and back buffers 36 for display on the monitors 22 to provide the user 20 a seamless experience when using the multiple monitors 22, and for isolating the application modules 14 from both the complexity of communication with the graphics card 32, as well as having to maintain track of the front buffers 34 and back buffers 36 associated with the multiple monitors 22. The process undertaken by the WMM 16 to determine what should be displayed to the user 20 may occur tens or hundreds of times per second.
In order to communicate with the graphics card 32, the WMM 16 interacts with a graphics library 38. The graphics library 38 in turn communicates with device drivers 40. The device drivers 40 are typically developed and manufactured by the manufacturer of the graphics card 32, and issue commands that control the graphics card 32 in response to calls from the graphics library 38. The graphics library 38 may comprise any suitable graphics library that provides an interface between a module, such as the WMM 16, and the device drivers 40 associated with the graphics card 32. Non-limiting examples of suitable graphics libraries 38 include the Microsoft® DirectX® interface library and the OpenGL® interface library. The graphics card 32 may include a graphics processor (not illustrated) which is coupled to the front buffers 34 and back buffers 36. Non-limiting examples of the graphics card 32 include an Accelerated Graphics Port (AGP) or Peripheral Component Interconnect Express (PCI-E) graphics card that includes a GeForce® or Radeon® chipset. For purposes of illustration, the embodiments are discussed in the context of a single graphics card 32, but are not limited to a device 10 having a single graphics card 32, and have applicability to devices 10 having multiple graphics cards 32.
Assume for purposes of illustration the following scenario. The application module 14-1 directs the WMM 16 to generate the window 18-4, and provides the WMM 16 information about the window 18-4, including, for example, information about the size, location, and content of the window 18-4. In response, the WMM 16 generates a window entry 28-1. The window entry 28-1 comprises the information used by the WMM 16 to know how to display the window 18-4 for the user 20, as visually illustrated by a dashed arrow 44-1. The application module 14-1 also directs the WMM 16 to generate the window 18-5, and provides the WMM 16 information about the window 18-5, including, for example, information about the size, location, and content of the window 18-5. In response, the WMM 16 generates a window entry 28-2. The window entry 28-2 comprises the information used by the WMM 16 to know how to display the window 18-5 for the user 20, as visually illustrated by a dashed arrow 44-2. Other window entries 28-3-28-5 comprise the information used by the WMM 16 for displaying windows 18-3, 18-2, and 18-1 respectively. Windows 18-1-18-3 may be associated with, for example, the application modules 14-2-14-4, respectively. The application module 14-1 need not be aware of the state of the desktop 30, which portions of the desktop 30 the windows 18-4, 18-5 overlap, or the windows 18-1-18-3, because the WMM 16 manages the overall display provided to the user 20 on the monitors 22. Nor does the application module 14-1 need to know how to communicate with the graphics card 32, or to maintain the multiple front buffers 34 and back buffers 36 of the graphics card 32, or even that there are two monitors 22.
The application module 14-1 may receive a user-initiated request from the user 20 to generate a child window 18-7 that overlays the window 18-6. In response, the application module 14-1 generates a window entry 46-2 that maintains information that defines the window 18-7, including, for example, the size, location and content of the window 18-7. Because the application module 14-1 controls the front buffer 34-2 and back buffer 36-2, the application module 14-1 is responsible for determining what portions of the window 18-6 are overlayed by the window 18-7, so that the windows 18-7 and 18-6 are properly displayed.
Additional problems with the use of conventional full screen mode in conjunction with multiple monitors include the complexity and difficulty of dealing with edge cases, including, for example, windows that span more than one monitor, overlapping windows, and windows that do not completely fill a monitor. Moreover, if the application module 14-1 enables the use of plug-in modules, such as dynamic link libraries, such plug-in modules are unable to generate and provide windows for display on the monitor 22-2, because the application module 14-1 controls the front buffer 34-2 and the back buffer 36-2 and the plug-in module is precluded from accessing the front buffer 34-2 and the back buffer 36-2.
The application module 14-5 determines that a multi-monitor full screen mode is requested (
The application module 14-5 determines a number N of monitors 22 that are coupled to a plurality of video ports 50-1, 50-2 of the device 10, in this example the number N being equal to two (
In response to the direction from the application module 14-5, the WMM 16 generates a window entry 28-6 that contains information identifying the cover window 52-1, and a window entry 28-7 that contains information identifying the cover window 52-2. The WMM 16 displays the cover windows 52-1, 52-2. The WMM 16 is directed to display the cover windows 52 on top of other windows 18 that are associated with application modules 14 other than the application module 14-5, such as the windows 18-1-18-3, so that such windows 18-1-18-3 are no longer seen by the user 20, as illustrated in dashed outline in
The application module 14-5 determines at least one primary monitor 54 of the plurality of monitors 22 (
The application module 14-5 determines a full screen display area of the primary monitor 54 (
The application module 14-5 sizes the main application window 18-4 to have dimensions that are at least coextensive with dimensions of the full screen display area of the primary monitor 54 (
Because the main application window 18-4 has no border or title bar, the main application window 18-4 may not be resizable or moveable by the user 20 in the same manner windows 18 are typically resizable and moveable when not in the multi-monitor full screen mode. Accordingly, in order to resize the main application window 18-4, the user 20 may indicate to the application module 14-5 a desire to exit the multi-monitor full screen mode. Such desire may be communicated via any desirable mechanism implemented by the application module 14-5. For example, in one embodiment, in response to receiving a right click from an input device that is hovering over the main application window 18-4, the application module 14-5 may present a dialog box with various options, including an option to exit multi-monitor full screen mode.
In one embodiment, prior to altering the attributes of any window 18 currently associated with the application module 14-5, such as the main application window 18-4 and the child window 18-5, the application module 14-5 obtains the attribute values of attributes of each window 18 currently associated with the application module 14-5, and stores the attribute values in a memory, for subsequent use if the multi-monitor full screen mode is exited by the user 20. The attribute values include information that identifies visual characteristics of the main application window 18-4, and user options for altering a size of the main application window 18-4, a location of the main application window 18-4, a size of the main application window 18-4, the status of a border, maximize and minimize buttons, and the like.
In the event the user 20 decides to exit the multi-monitor full screen mode, the application module 14-5 may access the stored attribute values of the main application window 18-4 and the child window 18-5, direct the WMM 16 to apply such stored attribute values to the main application window 18-4 and the child window 18-5, and to display the main application window 18-4 and the child window 18-5 such that the main application window 18-4 and the child window 18-5 are displayed to the user 20 identically as they were displayed prior to entering the multi-monitor full screen mode. Thus, the main application window 18-4 and the child window 18-5 may be displayed at the same size and location, and have the same border, title bar, and other attributes that such windows 18 had immediately prior to entering the multi-monitor full screen mode. Upon receiving the request to exit multi-monitor full screen mode, the application module 14-5 may also direct the WMM 16 to no longer display the cover windows 52-1, 52-2, and thereby cause the windows 18-1-18-3 to be displayed again to the user 20.
In another embodiment, only the main application window 18-4 is completely restored to its previous state prior to entering multi-monitor full screen mode. In contrast, the child window 18-5 may remain at the same size and location as the child window 18-5 was while in multi-monitor full screen mode, but have its window styles, such as a title bar, menu bar, and border, restored.
In one embodiment, as discussed above, when entering the multi-monitor full screen mode the application module 14-5 may set the attributes of the child window 18-5 to have no border, no menu bar, and no title bar, such that the child window 18-5 merely displays content, such as imagery. The application module 14-5 may also have a locked mode, in which the child window 18-5 may not be resized or moved, and may have an unlocked mode, in which the child window 18-5 may be resized or moved. When in unlocked mode, the application module 14-5 may designate a border region of the child window 18-5 as a region by which the user 20 may resize the child application window 18-5, if desired. In one embodiment, this border region may not be visually depicted to the user 20 so as to maintain uninterrupted imagery across the entire child application window 18-5. The application module 14-5 may receive input data indicating that the user 20 has left clicked on the border region of the child window 18-5. The border region may comprise, for example, a 5-10 pixel wide region of the perimeter of the child window 18-5. Upon receipt of the input data, the application module 14-5 may determine that the input device was clicked at a location within the border region, and in response alters the cursor icon from a pointer icon to a resize icon. If the user 20 holds down the left mouse button and drags it to a new location, the application module 14-5 may interpret this action as a resize request, and pass this information to the WMM 16 so that the WMM 16 can resize the child window 18-5 as requested. Note that in conventional full screen mode, the application module 14-5 would control the front buffer 34-2 and back buffer 36-2, and would need to implement such resize request without the aid of the WMM 16.
If, while in unlocked mode, the application module 14-5 receives input data indicating the user 20 has pressed the left mouse button while the cursor of the mouse is over the child window 18-5, but in an area other than the border region, and in an area not over an active control being displayed in the child window 18-5, the application module 14-5 may interpret this input data as a move window request. The application module 14-5 may alter the cursor icon from a pointer icon to a move icon. If the user 20 holds down the left mouse button and drags the mouse cursor to a new location, the application module 14-5 interprets this action as a move request, and passes this information to the WMM 16 so that the WMM 16 can move the child window 18-5 as requested. Note that again, in conventional full screen mode, the application module 14-5 would control the front buffer 34-2 and back buffer 36-2, and would need to implement such move request without the aid of the WMM 16.
The application module 14-5 directs the WMM 16 (
The application module 14-5 also determines the full screen display area of the monitor 22-2. For purposes of illustration, assume that the full screen display area of the monitor 22-2 is coextensive in size with the maximum display area 24-2. The application module 14-5 sizes the window 18-7 to have dimensions that are coextensive with the full screen display area of the monitor 22-2. The application module 14-5 also alters the styles and other attributes associated with the window 18-7 such that the window 18-7 is borderless, has no title bar 56, and no window sizing buttons 60. The application module 14-5 then directs the WMM 16 to display the window 18-7 on the monitor 22-2. After implementation of the multi-monitor full screen mode according to this embodiment, the monitors 22-1-22-3 may appear as illustrated at time T2.
The application module 14-5 then sizes the window 18-7 to have dimensions coextensive with the maximum display areas 24 of both the monitors 22-1 and 22-2. Other processing may be substantially similar to that described above with regard to
The application module 14-5 then sizes the window 18-7 to have dimensions coextensive with the maximum display area 24 of the monitor 22-1, and 22-2, and alters attributes of the window 18-7 to be borderless, have no title bar, menu bar, or window sizing buttons. Similarly, the application module 14-5 alters the attributes of the window 18-8 to have no title bar, border, or window sizing buttons, and directs the WMM 16 to display the window 18-8 on top of the cover windows 52-1-52-3. Other processing may be substantially similar to that described above with regard to
The application module 14-5 then sizes the window 18-7 to have dimensions coextensive with the maximum display areas 24 of all of the monitors 22-1-22-3. Other processing may be substantially similar to that described above with regard to
In this embodiment, at a time T1, the window 18-7 is positioned entirely within the monitor 22-2. Upon determining that the multi-monitor full screen mode has been requested, the application module 14-5 determines that the window 18-7 is displayed on the monitor 22-2, and based on this determination designates the monitor 22-2 as the primary monitor 54. The application module 14-5 determines the full screen display area of the monitor 22-2. For purposes of illustration, assume that the full screen display area of the monitor 22-2 is coextensive in size with the maximum display area 24-2. The application module 14-5 sizes the window 18-7 to have dimensions that are coextensive with the full screen display area of the monitor 22-2. The application module 14-5 also alters the styles and other attributes associated with the window 18-7 such that the window 18-7 is borderless, has no title bar, and no window sizing buttons. The application module 14-5 then directs the WMM 16 to display the window 18-7 on the monitor 22-2.
As illustrated at time T1, the windows 18-8-18-9 also include title bars, borders, as well as various window sizing buttons. The application module 14-5 alters the attributes of the windows 18-8-18-9 to have no title bars, borders, or sizing buttons, and directs the WMM 16 to display the window 18-8 on top of the cover window 52-1, and the window 18-9 on top of the cover window 52-3, using the window ID provided by the plug-in module.
Other processing may be substantially similar to that described above with regard to
The system memory 82 may include non-volatile memory 86 (e.g., read only memory (ROM), erasable programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), etc.) and/or volatile memory 88 (e.g., random access memory (RAM)). A basic input/output system (BIOS) 90 may be stored in the non-volatile memory 86, and can include the basic routines that help to transfer information between elements within the device 10. The volatile memory 88 may also include a high-speed RAM, such as static RAM for caching data.
The device 10 may further include a computer-readable storage 92, which may comprise, for example, an internal hard disk drive (HDD) (e.g., enhanced integrated drive electronics (EIDE) or serial advanced technology attachment (SATA)), HDD (e.g., EIDE or SATA) for storage, flash memory, or the like. The computer-readable storage 92 and other drives, associated with computer-readable and computer-usable media, provide non-volatile storage of data, data structures, computer-executable instructions, and the like. Although the description of computer-readable media above refers to an HDD, it should be appreciated by those skilled in the art that other types of media which are readable by a computer, such as Zip disks, magnetic cassettes, flash memory cards, cartridges, and the like, may also be used in the operating environment, and further, that any such media may contain computer-executable instructions for performing functionality described herein.
A number of modules can be stored in the computer-readable storage 92 and in the volatile memory 88, including the operating system 12 and one or more program modules 94, which may implement the functionality described herein in whole or in part, including, for example, functionality associated with the application module 14-5 and the WMM 16, and other processing and functionality described herein. It is to be appreciated that the embodiments can be implemented with various commercially available operating systems 12 or combinations of operating systems 12.
In one embodiment, the application module 14-5 is stored in the system memory 82 and is operative to provide instructions to the processor 80. The processor 80 is responsive to the instructions of the application module 14-5. The application module 14-5 is operative to perform the functionality described herein with respect to the application module 14-5.
All or a portion of the embodiments may be implemented as a computer program product stored on a transitory or non-transitory computer-usable or computer-readable storage medium, such as the computer-readable storage 92, which includes complex programming instructions, such as complex computer-readable program code, configured to cause the processor 80 to carry out the steps described herein. Thus, the computer-readable program code can comprise software instructions for implementing the functionality of the embodiments described herein when executed on the processor 80. The processor 80, in conjunction with the program modules 94, may serve as a control system for the device 10 that is configured to, or adapted to, implement the functionality described herein.
The user 20 may be able to enter commands and information into the device 10 through one or more input devices, such as, for example, a keyboard (not illustrated), a pointing device such as a mouse (not illustrated), or a touch-sensitive surface (not illustrated). Other input devices (not illustrated) may include a microphone, an infrared remote control, a gesture recognition system, a joystick, a game pad, a stylus pen, or the like.
The device 10 may also include a communication interface 96 suitable for communicating with a network. The device 10 includes one or more graphics cards 32, each of which may have one or more video ports 50 (not illustrated) for coupling to corresponding monitors 22.
Those skilled in the art will recognize improvements and modifications to the preferred embodiments of the present disclosure. All such improvements and modifications are considered within the scope of the concepts disclosed herein and the claims that follow.
Claims
1. A computer-implemented method for implementing a multi-monitor full screen mode in an application module executing on a device comprising a processor, the method comprising computer-implemented operations for:
- determining, by the application module, that the multi-monitor full screen mode is requested;
- determining a number (N) of monitors that are coupled to a plurality of video ports of the device, wherein N is greater than one, the N monitors each having a respective maximum display area based on a corresponding monitor screen;
- directing, by the application module, a window management module (WMM) that is independent of the application module to display at least one cover window that has dimensions coextensive with all dimensions of the respective maximum display areas of the N monitors combined;
- determining at least one primary monitor of the N monitors;
- determining a full screen display area associated with the at least one primary monitor;
- sizing a main application window of the application module to have dimensions that are at least coextensive with dimensions of the full screen display area; and
- directing the WMM to display the main application window on the at least one primary monitor.
2. The method of claim 1, further comprising receiving a user-initiated request to enter the multi-monitor full screen mode.
3. The method of claim 1, wherein the WMM is configured to manage a plurality of windows associated with a plurality of different application modules.
4. The method of claim 1, wherein the full screen display area is coextensive with the maximum display area of the at least one primary monitor.
5. The method of claim 1, wherein the full screen display area is smaller than the maximum display area of the at least one primary monitor.
6. The method of claim 1, further comprising:
- determining a second primary monitor of the N monitors; and
- wherein the full screen display area is associated with the at least one primary monitor and the second primary monitor.
7. The method of claim 6, wherein determining the full screen display area associated with the at least one primary monitor comprises:
- accessing a configuration file; and
- obtaining the full screen display area from the configuration file.
8. The method of claim 1, further comprising:
- setting attributes of the main application window such that the main application window is borderless, non-resizable, and lacks a minimize button and a maximize button.
9. The method of claim 1, further comprising:
- prior to sizing the main application window, determining a plurality of attribute values of attributes of the main application window, the attribute values identifying visual characteristics of the main application window includes a size of the main application window and a location of the main application window; and
- storing the plurality of attribute values in a memory.
10. The method of claim 9, further comprising:
- receiving a request to exit the multi-monitor full screen mode;
- accessing the memory to obtain the plurality of attribute values;
- altering the attributes of the main application window to have the plurality of attribute values; and
- directing the WMM to display the main application window.
11. The method of claim 1, further comprising:
- determining a child application window associated with the application module, the child application window being displayed on a particular monitor of the N monitors prior to determining that the multi-monitor full screen mode is requested;
- after determining that the multi-monitor full screen mode is requested: setting attributes of the child application window such that the child application window is borderless, cannot be minimized and cannot be maximized; and directing the WMM to display the child application window on top of any other window displayed on the particular monitor.
12. The method of claim 11, further comprising:
- determining that a user has selected, with an input device, a border region of the child application window;
- based on the determination, altering an icon of a pointer device to indicate a resize operation;
- determining that the user has dragged the icon to a new location on the particular monitor; and
- directing the WMM to display the child application window with a size based on the new location.
13. The method of claim 1, wherein directing the WMM that is independent of the application module to display the at least one cover window comprises:
- directing the WMM that is independent of the application module to display a plurality of cover windows, the each cover window being displayed on a different one of the N monitors, and being coextensive with the respective maximum display area of the different one of the N monitors.
14. The method of claim 1, wherein determining the at least one primary monitor comprises:
- determining a particular monitor of the N monitors on which the main application window is located, and designating the particular monitor as the at least one primary monitor.
15. The method of claim 1, wherein determining the at least one primary monitor comprises:
- determining that the main application window spans multiple monitors of the N monitors;
- determining that a majority of an area of the main application window is displayed on a particular monitor of the multiple monitors; and
- designating the particular monitor as the at least one primary monitor.
16. A device, comprising:
- a plurality of video ports configured to communicate with a plurality of monitors;
- a memory;
- a processor coupled to the plurality of video ports and the memory;
- an application module in the memory and operative to provide instructions to the processor, the processor responsive to the instructions of the application module, the application module operative to: determine that a multi-monitor full screen mode is requested; determining a number (N) of the plurality of monitors coupled to the plurality of video ports, wherein N is greater than one, the N monitors each having a respective maximum display area based on a corresponding monitor screen; direct a window management module (WMM) that is independent of the application module to display at least one cover window that has dimensions coextensive with all dimensions of the respective maximum display areas of the N monitors combined; determine at least one primary monitor of the N monitors; determine a full screen display area associated with the at least one primary monitor; size a main application window of the application module to have dimensions that are at least coextensive with dimensions of the full screen display area; and direct the WMM to display the main application window on the at least one primary monitor.
17. The device of claim 16, wherein the WMM is configured to manage a plurality of windows associated with a plurality of different application modules.
18. The device of claim 16, wherein the application module is further configured to:
- determine a second primary monitor of the N monitors; and
- wherein the full screen display area is associated with the at least one primary monitor and the second primary monitor.
19. A computer program product for implementing a multi-monitor full screen mode in an application module, the computer program product stored on a non-transitory computer-readable storage medium and including instructions configured to cause a processor to carry out the steps of:
- determining that the multi-monitor full screen mode is requested;
- determining a number (N) of monitors that are coupled to a plurality of video ports of a device, wherein N is greater than one, the N monitors each having a respective maximum display area based on a corresponding monitor screen;
- directing a window management module (WMM) that is independent of the application module to display at least one cover window that has dimensions coextensive with dimensions of the respective maximum display areas of the N monitors;
- determining at least one primary monitor of the N monitors;
- determining a full screen display area associated with the at least one primary monitor;
- sizing a main application window of the application module to have dimensions that are at least coextensive with dimensions of the full screen display area;
- directing the WMM to display the main application window on the at least one primary monitor;
- determining a child application window associated with the application module, the child application window being displayed on a particular monitor of the N monitors prior to determining that the multi-monitor full screen mode is requested; and
- after determining that the multi-monitor full screen mode is requested: setting attributes of the child application window such that the child application window is borderless, cannot be minimized and cannot be maximized; and directing the WMM to display the child application window on top of any other window displayed on the particular monitor.
20. The method of claim 1, wherein the at least one cover window is configured to conceal any pre-existing windows associated with other application modules that are displayed on the N monitors.
6018340 | January 25, 2000 | Butler |
6025871 | February 15, 2000 | Kantor et al. |
6411302 | June 25, 2002 | Chiraz |
6501441 | December 31, 2002 | Ludtke |
6774912 | August 10, 2004 | Ahmed et al. |
7600190 | October 6, 2009 | Wang |
8763052 | June 24, 2014 | Theberge |
20020051017 | May 2, 2002 | Wishoff |
20030079032 | April 24, 2003 | Orsolits |
20030223182 | December 4, 2003 | Yurugi |
20040025112 | February 5, 2004 | Chasen |
20050020238 | January 27, 2005 | Eastman |
20050160302 | July 21, 2005 | Asakura |
20050204284 | September 15, 2005 | Park |
20050265609 | December 1, 2005 | Morishige |
20060171453 | August 3, 2006 | Rohlfing |
20060200517 | September 7, 2006 | Nelson |
20060206825 | September 14, 2006 | Dorn |
20060224963 | October 5, 2006 | Katsuranis et al. |
20060288371 | December 21, 2006 | Jun |
20070016867 | January 18, 2007 | Nickell |
20070024645 | February 1, 2007 | Purcell |
20070226644 | September 27, 2007 | Bradfield |
20070233792 | October 4, 2007 | Sylthe |
20080045234 | February 21, 2008 | Reed |
20080153452 | June 26, 2008 | Huang |
20080177994 | July 24, 2008 | Mayer |
20110037711 | February 17, 2011 | Siddiqui et al. |
20110043696 | February 24, 2011 | Onogi et al. |
20110144970 | June 16, 2011 | Jiang et al. |
20120050260 | March 1, 2012 | Cheng |
20120182210 | July 19, 2012 | Chan et al. |
20130002568 | January 3, 2013 | Selim |
20130022292 | January 24, 2013 | Miyagi |
20140040819 | February 6, 2014 | Duffy |
20140304643 | October 9, 2014 | Holland |
20140351722 | November 27, 2014 | Frederickson |
20150089395 | March 26, 2015 | Beel |
2010083168 | July 2010 | WO |
- Daniel Eran Dilger Inside OS X 10.8 Mountain Lion GM: Go Full Screen on any display Jul. 21, 2012 8 pages.
- International Search Report and Written Opinion for PCT/US2014/048777, dated Nov. 11, 2014, 9 pages.
- Author Unknown, “Class GraphicsDevice (Java Platform SE 6),” Oracle, 2011, http://docs.oracle.com/javase/6/docs/api/java/awt/GraphicsDevice.html, 9 pages.
- Author Unknown, “Java Tutorial/Trail: Full-Screen Exclusive Mode API,” Wikiversity, http://en.wikiversity.org/wiki/Java_Tutorial/Trail:_Full-Screen_Exclusive_Mode_API, last modified on Aug. 23, 2011, 6 pages.
- Kozlov et al., “Why Direct3D application performs better in full screen mode?,” Questions and Answers, Stack Exchange Inc., Jun. 22, 2009, http://stackoverflow.com/questions/304669/why-direct3d-application-performs-better-in-full-screen-mode, 3 pages.
- Langner et al., “Simulate fullscreen,” Questions and Answers, Stack Exchange Inc., Dec. 9, 2009, http://stackoverflow.com/questions/1865453/simulate-fullscreen, 2 pages.
- International Preliminary Report on Patentability for International Patent Application No. PCT/US2014/048777, dated Feb. 11, 2016, 6 pages.
- Author Unknown, “Direct3D 9Ex Improvements,” Retrieved from the Internet Nov. 17, 2016, https://web.archive.org/web/20130605164026/https://msdn.microsoft.com/en-us/library/windows/desktop/ee890072(v=vs.85).aspx, Feb. 27, 2013, Microsoft, 15 pages.
- Extended European Search Report for European Patent Application No. 14832276.1, dated Dec. 15, 2016, 12 pages.
- Examination Report for European Patent Application No. 14832276.1, dated Dec. 14, 2017, 13 pages.
- Examination Report for European Patent Application No. 14832276.1, dated Sep. 7, 2018, 7 pages.
- Notice of Acceptance for Australian Patent Application No. 2014296339, dated Dec. 5, 2019, 3 pages.
- First Examination Report for New Zealand Patent Application No. 716584, dated Oct. 4, 2019, 2 pages.
- Examination Report No. 1 for Australian Patent Application No. 2014296339, dated Mar. 1, 2019, 2 pages.
Type: Grant
Filed: Jul 30, 2013
Date of Patent: Feb 9, 2021
Patent Publication Number: 20150040062
Assignee: LOCKHEED MARTIN CORPORTATION (Bethesda, MD)
Inventors: Howell Hollis (Orlando, FL), Michael C. Semeniuk (Orlando, FL), Robert Charles McCarthy (Orlando, FL), Zachary James Heylmun (Orlando, FL), Hong Phuoc Nguyen (Orlando, FL)
Primary Examiner: Andrea N Long
Application Number: 13/953,886
International Classification: G06F 3/14 (20060101); G09G 5/399 (20060101); G09G 5/14 (20060101);