home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
200-299
/
ff246.lzh
/
ScreenShare
/
readme
< prev
next >
Wrap
Text File
|
1989-09-14
|
4KB
|
64 lines
screenshare.library
===================
This is a proposed scheme to allow applications ("symbionts") to
open up windows on other applications' ("hosts") custom screens.
There are many reasons for wanting to do this. For example, it is
nice to be able to have AmigaREXX open up a file requester on your
application's screen from outside of your application, and it is useful to
be able to open up your editor on your terminal emulator's screen so you
can write your messages while being able to see the contents of the
terminal's screen. Sofar, this has only been possible by opening all
applications on the Workbench. This causes excessive clutter, and limits
you to the Workbench's number of colors and resolution mode.
The scheme proposed here consists of an exec library to which
prospective hosts can post their screen pointers and provide them with a
unique name. Symbionts can query the same library and find, given the name,
the pointer to the host's screen. The method is very simple, does not
require SetFunction()ing any Amiga functions, does not take up very much
room, is trivially easy to implement, and is, above all, safe if both hosts
and symbionts obey the rules. This implies, however, that the method
cannot be used transparently with existing applications not set up properly.
This is just as well, because any scheme that tries to retrofit screen
sharing to older applications requires trickery and is dangerous.
There are six accessible functions in the screenshare.library, one of
which is mainly a debugging tool and should not normally be called in an
application. A typical host would call the functions: PublicScreen() to declare
a screen public, PubScrLocked() to inquire whether there are any symbionts
currently accessing the screen, and PrivateScreen() to revert a named public
screen to private status. A typical symbiont would call the functions:
LockPubScreen() to obtain a pointer to the Screen structure of a named public
screen, and UnlockPubScreen() to signal to the library that all windows on a
named public screen have been closed by the symbiont. All calls have a single
argument, the name of the public screen (a null-terminated ascii string), with
the exception of PublicScreen(), which has a pointer to the Screen structure
as the second argument.
It is possible for a program to be both a host and a symbiont, e.g.
when the first instance of a program opens a screen, and subsequent instances
want to open on that same screen.
Further documentation can be found in the file pubscr.c, the main
part of the screenshare.library.
The functions can be accessed by linking the glue routines contained
in liblink.asm to your host or symbiont.
In this archive, you will find also three utilities: showscr, addscr,
and addsym. Thes are intended for debugging purposes only, and should typically
not be distributed with your software. Showscr shows the current list of
shared screens. Addscr can fake a shared screen by adding one to the list. It
can also remove shared screens from the list. Addsym can fake a symbiont
opening up on a shared screen. It can also remove symbionts.
These files are not in the public domain. They may, however, be
distributed freely, and used freely, in any software, PD or commercial.
Willy Langeveld 11 may 1988
For this release: the documentation did not state previously that
int return codes from functions are 16 bit values and should more properly
be called short. Also, a minor bug was fixed.
Willy Langeveld 7 september 1989