The present invention relates to a method and system for application sharing and, in particular, to a system and methods for selective sharing of an application window.
The user of the source node 100 may choose to share a display of a particular application window with the user of the consumer node 150. In some embodiments, the user of the source node 100 shares a plurality of application windows that form a desktop environment 102. In other embodiments, the user of the source node 100 shares a display of a plurality of desktop environment elements, such as icons, taskbars, and menus with the user of the consumer node 150. In one embodiment, the user of the source node 100 chooses to share the display of an application window or a desktop environment element to enable collaboration with the user of the consumer node 150. In another embodiment, the user of the source node 100 chooses to share the display to enable training or troubleshooting.
In some embodiments, the desktop environment 102 on the source node 100 includes an application window 104. In one of these embodiments, the source node 100 shares with the consumer node 150 every desktop environment element and every application window displayed in desktop environment 102. The consumer node 150 may display the shared desktop environment 102 to the user in an application window 155, located within the desktop environment 151. In another of these embodiments, the application window 155 displays only the shared application window 104. The application window 155 may be located within the desktop environment 151. The application window 155 may also be displayed as a nested window located within an application window 152.
Conventional systems such as those depicted by
Presentation of irrelevant materials by the intruding application window 156 may distract from the presentation of display data to the consumer node 150, or confuse a user of the consumer node 150. Display of an intruding application window 156 may also cause inappropriate distribution of sensitive data to the consumer node 150. A method is desirable for enabling selective sharing of application windows by a user while providing privacy to the user and maintaining confidentiality of application windows not selected for sharing. Additionally, it would be desirable for such a method to minimize viewer confusion or distraction.
The present invention relates to a system and methods for selective sharing of an application window.
In one aspect, the invention relates to a method for selective sharing of an application window. A source node selects a first application window for sharing with at least one consumer node. A determination is made that a second application window obscures at least some of the first application window. The first application window, unobscured by the second application window, is displayed on the at least one consumer node.
In one embodiment, a portion of a desktop environment is selected at the source node for sharing with at least one consumer node. In another embodiment, a second application window is selected at the source node for sharing with the at least one consumer node, the second application window comprising a window owned by the first application window. In still another embodiment, the second application window does not obscure the first application window in the display to the at least one consumer node because the second application window is not displayed.
In another aspect, the invention relates to a method of selective sharing of an application window. A source node selects a first application window to share with at least one consumer node. The source node identifies a change in display data associated with the first application window. The source node detects that the change includes display data associated with a second application window. The source node determines that the second application window is not selected for sharing with the at least one consumer node. The source node determines not to generate a data packet representing the change.
In some embodiments, the source node selects a plurality of application windows to share with at least one consumer node, the plurality of application windows forming a desktop environment. In one embodiment, the source node detects that the second application window has a window identifier different from a window identifier of the first application window. In another embodiment, a determination is made as to whether a change to display data associated with a second application window collides with a change to display data associated with the application window. In still another embodiment, an indication is made to a user of the source node that the presentation of display data associated with the application window is paused. In some embodiments, a data packet is generated responsive to a determination that the change associated with the second application window is selected for sharing with the at least one consumer node.
In another aspect, the invention relates to a system for selective sharing of an application window, including a capture engine, a collision detector, and a packet generator. The capture engine identifies a change to a set of display data associated with an application window and stores the set of display data. The collision detector, in communication with the capture engine, determines whether a change to the set of display data includes display data associated with a second application window and determines whether the second application window is selected for sharing. The packet generator generates a data packet representing the change to the set of display data.
In one embodiment, the capture engine captures a section of a screen displayed to a user of the node. In another embodiment, the collision detector requests generation of a data packet from the packet generator if a change associated with the application window comprises data associated with the application window. In still another embodiment, the collision detector requests generation of a data packet from the packet generator if a change associated with the application window comprises display data associated with the application window and a second application window selected for sharing. In yet another embodiment, a third application window displays a frame around the first application window to indicate to a user of the node that the first application window is selected for sharing.
These and other aspects of this invention will be readily apparent from the detailed description below and the appended drawings, which are meant to illustrate and not to limit the invention, and in which:
Referring now to
The network connections 160, 170, 180 between the consumer nodes 150, 150′, 150″ and the source node 100 can be local area networks (LAN), metropolitan area networks (MAN), or a wide area network (WAN) such as the Internet. The source node 100 and the consumer nodes 150, 150′, 150″ may connect to the networks 160, 170, 180 through a variety of connections including standard telephone lines, LAN or WAN links (e.g., T1, T3, 56 kb, X.25), broadband connections (ISDN, Frame Relay, ATM), and wireless connections. Connections between the source node 100 and the consumer nodes 150, 159′, 150″ may use a variety of data-link layer communication protocols (e.g., TCP/IP, IPX, SPX, NetBIOS, NetBEUI, SMB, Ethernet, ARCNET, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEE 802.11b, IEEE 802.11g and direct asynchronous connections). Although shown in
In some embodiments, the source node 100 and the consumer nodes 150, 150′, 150″ are provided as personal computers or computer servers, of the sort manufactured by the Hewlett-Packard Corporation of Palo Alto, Calif. or the Dell Corporation of Round Rock, Tex.
The central processing unit 202 is any logic circuitry that responds to and processes instructions fetched from the main memory unit 204. In many embodiments, the central processing unit is provided by a microprocessor unit, such as: the 8088, the 80286, the 80386, the 80486, the Pentium, Pentium Pro, the Pentium II, Pentium III, Pentium IV, Pentium M, the Celeron, or the Xeon processor, all of which are manufactured by Intel Corporation of Mountain View, Calif.; the 68000, the 68010, the 68020, the 68030, the 68040, the PowerPC 601, the PowerPC604, the PowerPC604e, the MPC603e, the MPC603ei, the MPC603ev, the MPC603r, the MPC603p, the MPC740, the MPC745, the MPC750, the MPC755, the MPC7400, the MPC7410, the MPC7441, the MPC7445, the MPC7447, the MPC7450, the MPC7451, the MPC7455, the MPC7457 processor, all of which are manufactured by Motorola Corporation of Schaumburg, Ill.; the Crusoe TM5800, the Crusoe TM5600, the Crusoe TM5500, the Crusoe TM5400, the Efficeon TM8600, the Efficeon TM8300, or the Efficeon TM8620 processor, manufactured by Transmeta Corporation of Santa Clara, Calif.; the RS/6000 processor, the RS64, the RS 64 II, the P2SC, the POWER3, the RS64 III, the POWER3-II, the RS 64 IV, the POWER4, the POWER4+, the POWER5, or the POWER6 processor, all of which are manufactured by International Business Machines of White Plains, N.Y.; or the AMD Opteron, the AMD Athalon 64 FX, the AMD Athalon, or the AMD Duron processor, manufactured by Advanced Micro Devices of Sunnyvale, Calif.
Main memory unit 204 may be one or more memory chips capable of storing data and allowing any storage location to be directly accessed by the microprocessor 202, such as Static random access memory (SRAM), Burst SRAM or SynchBurst SRAM (BSRAM), Dynamic random access memory (DRAM), Fast Page Mode DRAM (FPM DRAM), Enhanced DRAM (EDRAM), Extended Data Output RAM (EDO RAM), Extended Data Output DRAM (EDO DRAM), Burst Extended Data Output DRAM (BEDO DRAM), Enhanced DRAM (EDRAM), synchronous DRAM (SDRAM), JEDEC SRAM, PC 00 SDRAM, Double Data Rate SDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), SyncLink DRAM (SLDRAM), Direct Rambus DRAM (DRDRAM), or Ferroelectric RAM (FRAM).
In the embodiment shown in
In the embodiment shown in
A wide variety of I/O devices 230 may be present in the computer system 200. Input devices include keyboards, mice, trackpads, trackballs, microphones, and drawing tablets. Output devices include video displays, speakers, inkjet printers, laser printers, and dye-sublimation printers. An I/O device may also provide mass storage for the computer system 200 such as a hard disk drive, a floppy disk drive for receiving floppy disks such as 3.5-inch, 5.25-inch disks or ZIP disks, a CD-ROM drive, a CD-R/RW drive, a DVD-ROM drive, tape drives of various formats, and USB storage devices such as the USB Flash Drive line of devices manufactured by Twintech Industry, Inc. of Los Alamitos, Calif.
In further embodiments, an I/O device 230 may be a bridge between the system bus 220 and an external communication bus, such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWire bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or a Serial Attached small computer system interface bus.
General-purpose desktop computers of the sort depicted in
In some embodiments the consumer node 150, 150′, 150″ is a mobile device, such as a JAVA-enabled cellular telephone or personal digital assistant (PDA), such as the i55sr, i58sr, i85s, i88s, i90c, i95cl, or the im11000, all of which are manufactured by Motorola Corp. of Schaumburg, Ill., the 6035 or the 7135, manufactured by Kyocera of Kyoto, Japan, or the i300 or i330, manufactured by Samsung Electronics Co., Ltd., of Seoul, Korea. In other embodiments in which the consumer node 150 is mobile, it may be a personal digital assistant (PDA), such as the Tungsten W, the VII, the VIIx, the i705, or a combination PDA/telephone device such as the Treo 180, Treo 270, Treo 600, or Treo 650 all of which are manufactured by palmOne, Inc. of Milpitas, Calif.
In these embodiments, the consumer nodes 150, 150′, 150″ connect to the source node 100 using any one of a number of well-known protocols from the GSM or CDMA families, such as W-CDMA. These protocols support commercial wireless communication services and W-CDMA, in particular is the underlying protocol supporting i-Mode and mMode services, offered by NTT DoCoMo.
A source node 100 selects a first application window for sharing with at least one consumer node 150 (step 302). In some embodiments, a user of the source node 100 selects the first application window for sharing from a list of available application windows. In one of these embodiments, a selection menu 306 presents this list to the user of the source node 100.
Referring ahead,
In some embodiments, the menu 404 enables a user of a source node 100 to select an application window for sharing. In one of these embodiments, the default setting of the menu 404 indicates that the user will share an entire screen displayed on the source node 100 with a consumer node 150. Sharing the entire screen may result in presentation to the consumer node 150 of all application windows displayed by the source node 100, as well as presentation of a plurality of desktop environment elements, such as desktop icons, task bars, and menus. In some embodiments, the application windows displaying on the source node 100 form a desktop window environment.
In another embodiment where a user of the source node 100 selects the first application window for sharing from a list of available application windows, the user of the source node 100 selects a second application window for sharing with the at least one consumer node 150, the second application window being owned by the first application window. In one embodiment, the user explicitly selects the second application window for sharing by selecting the application from a list as discussed above. In another embodiment, when the user selects a first application window for sharing, a second application window owned by the first application window is automatically chosen for sharing, even without explicit selection by the user.
In still another embodiment where a user of the source node 100 selects the first application window for sharing from a list of available application windows, the selection menu enables the user of the source node 100 to select a portion of a desktop for sharing with at least one consumer node 150, as depicted in
In some embodiments, the selection menu 406 lists a plurality of application windows displayed by the source node 100. In one of these embodiments, the user of the source node 100 may select one of the plurality of application windows to share with a consumer node 150. In another of these embodiments, the user of the source node 100 may select a subset of the plurality of application windows displayed by the source node 100. In still another of these embodiments, the user of the source node 100 may select a subset of the plurality of application windows and exclude a second subset of the plurality of application windows.
In other embodiments, the selection menu 406 enables the user to indicate that all application windows displayed on the source node 100 should be shared with the consumer node 150. In still other embodiments, the selection menu 406 enables the user to indicate that a modified form of the desktop displayed on the source node 100. In one of these embodiments, the modified form of the desktop blocks display of a plurality of desktop elements including icons, background, or taskbars to the consumer node 150.
When the user of the source node 100 selects the user of the second source node 100 to control the presentation of the screen, the user of the second source node 100 receives a display 408. In one embodiment, the display 408 enables the user of the second source node 100 to use a selection menu 410 to select an application window to share with at least one consumer node 150. In some embodiments, the selection menu 410 is substantially similar to the selection menu 406 and presents to the user of the second source node 100 a listing of a plurality of application windows displaying on the second source node 100′.
Referring back to
The first application window is depicted unobscured by the second application window on the at least one consumer node 150 (step 306). In some embodiments, the second application window is not displayed to the at least one consumer node 150. In one of these embodiments, the source node 100 does not transmit display data associated with the second application window. In other embodiments, the second application window is displayed to the user of the source node 100 who may choose to display the second application window. In still other embodiments, the second application window is associated with the first application window and is displayed. In one of these embodiments, a data packet is generated to transmit the display data associated with the second application window to the consumer node 150.
A source node 100 selects a first application window to share with at least one consumer node 150 (step 502). In one embodiment, a user of the source node 100 selects the first application window. In some embodiments, a selection menu 406 presents this list to the user of the source node 100.
Referring ahead,
In one embodiment, when the user selects a name of the application window 608 from the selection menu 606, a third window 604 is associated with the application window 608 and both the third window 604 and the application window 608 display to the user. In some embodiments, the third window 604 displays the frame around the application window 608 when the user highlights the name of the application window 608 in the selection menu 606, before the user completes selection of the application window 608.
In some embodiments, the third window 604 displays a frame surrounding the application window 608. In one of these embodiments, the frame distinguishes the application window 608 from any other application windows displayed to the user, such as application window 610, and indicates to the user the application window the user selected. In another of these embodiments, a transparent frame is displayed and over a short period of time the level of opacity of the frame increases. In still another of these embodiments, the level of opacity of the frame increases and decreases, creating a pulsing effect around the application window 608.
In some embodiments, selecting an application window 608 for sharing results in the display of only that application window 608 to a consumer node 150. In one of these embodiments, the selection of the application window 608 for sharing indicates to the source node 100 that no other application window 610 should be presented to the consumer node 150 and the source node 100 blocks transmission of display data associated with any window other than the selected application window 608.
Referring back to
The source node 100 detects that the change includes display data associated with a second application window (step 506). In some embodiments, the source node 100 detects that the display data is associated with a window having a window identifier different from a window identifier of the first application window. In one of these embodiments, identifying a different window identifier indicates that the display data is associated with the second application window. In other embodiments, the source node 100 determines whether a change to display data associated with the second application window collides with the change to display data associated with the application window.
The source node 100 determines that the second application window is not selected for sharing with the at least one consumer node 150 (step 508). In one of these embodiments, the source node 100 makes this determination responsive to an examination of input received from the user via the selection menu. In another of these embodiments, the user may have explicitly identified the second application window as a window not to be shared with the consumer node 150.
The source node 100 determines not to generate a data packet representing the change (step 510). The determination not to generate the data packet may enable the source node 100 to prevent the second application window from displaying on the consumer node 150. The source node 100 may continue to transmit display data associated only with the first application window to the consumer node 150. In some embodiments, the source node 100 ceases transmission of display data associated with the first application window until display data associated only with the first application window is available for sharing with the consumer node 150. In one of these embodiments, this results in a pausing of a presentation of display data from the source node 100 to the consumer node 150. In another of these embodiments, the source node 100 indicates to the user of the source node 100 that the presentation of display data associated with the application window is paused.
In some embodiments, the source node 100 does generate the data packet, responsive to a determination that the change associated with the second application window is selected for sharing with the at least one consumer node 150. In one of these embodiments, the user of the source node 100 has selected the second application window for sharing. In another of these embodiments, the first application window created the second application window, making it a window owned by the first application window, and the second application window is automatically selected for sharing because of its association with the first application window.
Referring now to
In one embodiment, a window 616, displayed on the consumer node 150, contains all application windows displaying to the consumer node 150 from the source node 100. In an embodiment depicted by
In
In one embodiment, the third application window 604 provides the user of the source node 100 with an interface for modifying sharing preferences. In another embodiment, the third application window 604 provides the user with a pull down menu displayed when the user right-clicks on the third application window 604. In still another embodiment, the third application window 604 provides the user with an interface selected from a plurality of desktop environment elements, including taskbar items, desktop icons, and menu items.
In one embodiment, the preferences menu 620 indicates to the user of the source node 100 that the application window 608 is being shared with a user of a consumer node 150. In another embodiment, the preferences menu 620 enables the user to stop a presentation of display data to the user of the consumer node 150. In still another embodiment, the preferences menu 620 enables the user to change the color of the frame displayed around the application window 608 by the third application window 604.
The capture engine 702 identifies a change to a set of display data associated with an application window 704 and storing the set of display data. In some embodiments, a user of the node selects the application window 704 for sharing. In one of these embodiments, the user of the node selects a plurality of application windows 704 for sharing. In another of these embodiments, the user of the node selects a plurality of application windows 704 which together form the entire desktop environment 102. In still another of these embodiments, the user of the node selects a subset of the desktop environment 102 for sharing. In some embodiments, the user of the node explicitly selects the application window 704 for sharing. In other embodiments, where the application window 704 owns other application windows, the user of the node implicitly selects the owned application windows when the user selects the application window 704.
In one embodiment, the node shares the application window 704 by capturing changes to a set of display data and transmitting the changes to the node with whom the user shares the application window 704. In another embodiment, the capture engine 702 captures a section of a screen displayed to the user of the node. The display data representing the second of the screen may be analyzed for changes. In still another embodiment, the capture engine 702 captures a frame in a presentation to the second node.
The collision detector 708, in communication with the capture engine 702, determines whether a change to the set of display data includes display data associated with a second application window, and determines whether the second application window is selected for sharing. In some embodiments, the collision detector 708 determines not to transmit the change to the set of display data due to the association of the display data with the second application window. In one of these embodiments, this determination has the effect of pausing a presentation of display data to the second node, because no changes to the display data are transmitted, and thus, no changes to the application window are transmitted to the second node. In another of these embodiments, the collision detector 708 indicates to the user of the node that no change to the display data associated with the first application window is transmitted to the second node.
In some embodiments, the system includes a third application window displaying a frame around the first application window to indicate to a user of the node that the first application window is selected for sharing. In one of these embodiments, the third application window is associated with the first application window. In another of these embodiments, the first application window is assigned a z-order one level higher than the third application window and no application window has a z-order that would display it between the first application window and the third application window. In still another of these embodiments, the third application window is completely opaque and obscures any window having a lower z-order.
The packet generator 710 generates a data packet representing the change to the set of display data. In some embodiments, the packet generator 710 generates the data packet upon receiving a request to do so from the collision detector 708. In one of these embodiments, the collision detector 708 requests a data packet from the packet generator 710 if a change associated with the first application window comprises data only associated with the first application window. In another of these embodiments, the collision detector 708 requests a data packet from the packet generator if a change associated with the application window includes display data associated with the application window and a second application window selected for sharing. In still another of these embodiments, the packet generator 710 generates the data packet when the collision detector 708 has determined that display data associated with the second application window does not collide with the first application window.
In one embodiment, the packet generator 710 generates a data packet representing the set of display data associated with the first application window at the time the capture engine 702 identified the change to the set of display data. In another embodiment a transmitter receives the data packet from the packet generator and transmits the data packet for presentation to the at least one consumer node 150.
In one embodiment, the packet generator 710 of the source node 100 codes the current state of a dynamic data set, such as screen data, as a set of data packets. In some embodiments, this coding process is straightforward. For example, in the case where the dynamic data set is screen data, data packets may be coded by storing pixel values for a predetermined portion of the screen in the data packet. In some embodiments, the packet generator 710 of the source node 100 compresses the data stored in the data packets. In still other embodiments, the packet generator 710 of the source node 100 encrypts the data stored in the data packets. In still further embodiments, the packet generator 710 of the source node 100 both encrypts and compresses data stored in the data packets. As the dynamic data set changes, the source node updates the set of data packets comprising the current state of the data set.
In some embodiments, the packet generator 710 of the source node 100 transmits the current state of the dynamic data set to a communications service in a bandwidth-adaptive manner. In one embodiment, this is achieved by requiring the source node 100 to possess a transmission token before beginning transmission of the current state of the data set. In this embodiment, the source node 100 and the communications service exchange a limited number of transmission tokens, e.g., five. In other embodiments, the communication service transmits a message to the source node 100 to notify the source node 100 when it can send another data set update.
In some embodiments, the application window 804 provides feedback to a user of a source node 100 by displaying a frame around the application window 802 when the user selects the application window 802 for sharing with a user of a consumer node 150. In one of these embodiments, depicted in
In one embodiment, when the user of the source node 100 uses the selection menu 806 to select a modified version of the desktop environment, the plurality of desktop environment elements 808 are blocked from presentation to a user of a consumer node 150. In some embodiments depicted in
In one embodiment, when the user selects an option from the selection menu 806 to share a modified, “clean desktop” application window 802 with the consumer node 150, the modified desktop 810 is displayed to the user of the consumer node 150. In some embodiments, as depicted in the modified desktop 810 does not display to the user of the consumer node 150 the plurality of desktop environment elements shown in application window 802.
Referring now to
In one embodiment, the desktop environment 902 includes an application window 906 selected for sharing with the consumer node 150. In another embodiment, the desktop environment 902 includes an application 904 providing a frame around the application window 906 and indicating to the user of the source node 100 that the application window 906 was selected for sharing with the consumer node 150.
In one embodiment, the consumer node 150 receives at least one data packet from the source node 100 and displays on the desktop environment 908 at least one application window 910 representative of an application window 906 displaying on the source node 100. In this embodiment, the user of the source node shares with a user of the consumer node 150 an application window 906 containing a Microsoft Power Point Presentation on a “French Cooking Proposal.”
Referring now to
In one embodiment, a second application window 912 obscures the display on the source node 100 of the shared application window 906 on the desktop environment 902. A user of the source node 100 selected the application window 906 for sharing with the consumer node 150. The application window 904 indicates to the user that the application window 906 is being shared with the consumer node 150 by placing a frame around the application window 904.
In one embodiment, the second application window 912 does not obscure the display on the consumer node 150 of the shared application window 906 on the desktop environment 902. In this embodiment, the source node 100 detected a change to display data associated with the application window 906. The source node 100 also detected that the display data was associated with the second application window 912, which the user had not selected for sharing. The source node 100 determined that the display data associated with the second application window 912 obscured at least some of the application window 906. Upon making these determinations, the source node 100 did not transmit the display data associated with the second application window 912 to the consumer node 150. Since the consumer node 150 did not receive any display data associated with the second application window 912, the consumer node 150 does not display the second application window 912 to the user of the consumer node 150 viewing the desktop environment 908. Therefore, the user of the consumer node 150 views a representation of the first application window 910 unobscured by the second application window 912.
In some embodiments, displaying the application window 910 to the user of the consumer results in pausing the presentation of shared display data. In one of these embodiments, the presentation of shared display data is paused until the intruding application window 912 no longer obscures the application window 910. In another of these embodiments, an indication is displayed to the user of the host node 100 that the presentation is paused.
The following illustrative examples show how the methods and system discussed above can be used to provide selective sharing of an application window. These examples are meant to illustrate and not to limit the invention.
Selective Sharing of an Application Window
In one embodiment, a source node 100 displays a desktop environment 902 to a user of the source node 100. In a conferencing system, the user of the source node 100 determines to share some or all of the application windows that form the desktop environment 902 with a user of a consumer node 150. The user of the source node 100 may employ a conferencing software program to enable sharing and the source node 100 may use a presentation protocol to share display data with the consumer node 150. Presentation protocols include the Independent Computing Architecture (ICA) protocol, available from Citrix Systems, Inc. of Fort Lauderdale, Fla., and the Remote Desktop Protocol (RDP), manufactured by Microsoft Corporation. The user of the source node 100 may select an application window 906 for sharing with the user of the consumer node. The application window 906 may display, for example, a presentation, a word processing document, an internet document such as a web page. When the user of the source node 100 selects the application window 906 for sharing, an application window 904 is associated with the application window 904 and displays a frame around the shared application window 904 to indicate to the user that the application window 904 will be shared with the user of the consumer node 150.
In some embodiments, the consumer node 150 displays to the user of the consumer node 150 an application window 908. In one of these embodiments, the application window 908 displays output from a conferencing software program. In another of these embodiments, an application window 910 displays the shared application window 906. For example, if the user of the source node 100 selected for sharing a presentation document displayed within application window 906, the application window 910 would display to the user of the consumer node 150 the same presentation document.
In one embodiment, many application windows appear on the desktop environment 902. In some embodiments, only the application window 906 is selected for sharing. In other embodiments, a plurality of application windows 906 are selected. In still other embodiments, the entire desktop environment 902 is selected for sharing.
In some embodiments, an application window 912, which has not been selected for sharing, may appear on the desktop environment 902. In one of these embodiments, the application window 912 contains information personal to the user of the source node 100, such as an email or text message. In another of these embodiments, the application window 912 contains sensitive or confidential information that should not be shared with the user of the consumer node 150, such as a word processing document containing confidential company information. In still another of these embodiments, the application window 912 contains information that is irrelevant to the presentation of application window 906 and that would distract or confuse the user of the consumer node 150, such as an additional toolbar or menus.
In one embodiment, the source node 100 determines that the application window 912 should not be displayed to the consumer node 150. The source node 100 may make this determination by detecting that the application window 912 collides with the display of application window 906 and is not selected for sharing. Upon making this determination, the source node determines not to transmit display data representing the application window 912 to the consumer node 150. Since the consumer node 150 does not have the display data needed to display application window 912, the user of the consumer node 150 sees only the application window 906 and not the private, confidential, or irrelevant contents of application window 912.
The present invention may be provided as one or more computer-readable programs embodied on or in one or more articles of manufacture. The article of manufacture may be a floppy disk, a hard disk, a compact disc, a digital versatile disc, a flash memory card, a PROM, a RAM, a ROM, or a magnetic tape. In general, the computer-readable programs may be implemented in any programming language. Some examples of languages that can be used include C, C++, C#, or JAVA. The software programs may be stored on or in one or more articles of manufacture as object code.
While the invention has been shown and described with reference to specific preferred embodiments, it should be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention as defined by the following claims.