[comp.lang.smalltalk] schedulers dispatchers and windows

sukumar@ut-emx.UUCP (sukumar) (08/06/90)

some time back i had posted a request to SMALLTALK v/286's problem
of not returning control when windows are created with a scheduleWindow.

here is  a summary of responses.

Thanks to all those who replied.


Sukumar rathnam
sukumar@emx.utexas.edu

---------------------------------------------------------------------------

From: Doug Heins - - - HP Boise Division <dheins@hpbsl88.boi.hp.com>

	I have experienced the same problem several times.
When one calls

    "toppane dispatcher openWidnow scheduleWindow"

the Scheduler is sent a message called 
 
    "dropProcessSenderChain"  (I might be slightly off)

which drops all pending messages from the stack, and
consequently the returning point back into foobar to
continue on with the method foo.  So here is what you
can do to achieve the same result, but regain control
after opening the window:

     "Scheduler add: toppane dispatcher open.
	toppane displayWindow"

Atleast, this is what I have been using to get around the
problem;  however, I am no expert by any means and there
might be a more elegant approach...but it does work.

=============================================================================

The message scheduleWindow does not return.  The mechanism
Digitalk Smalltalk uses to handle multiple windows with 
multiple processes, is to DROP THE PROCESS STACK when a 
new window is created.  In other words, the entire context
of execution is thrown away.  As a result, you won't ever
see the end of your routine.

I believe Digitalk wrote something up in their last 
issue of SCOOP on this problem, and gave an alternative.
Ken Cooper                                  USENET: cooper%netcom@uunet.uu.net
Acumen Software                         Compu$erve: 71571,407
					       FAX: (415) 324-4383
                                               BIX: kcooper
=============================================================================

I have some code at home that accomplishes what you want.  I essentially
had to reverse engineer what the scheduler methods were doing, then pull
that up into my code.  the problem is that the scheduler sets up and
schedules the window, then throws the method stack away!  Brain-dead.

If you're interested, I can pull up a fragment and send it to you.  Send
me mail at yon@world.std.com (the account I read from home) if you want me
to hunt that code down.

David Yon
CASE Consultant

=============================================================================
-- 
Sukumar Rathnam 
Multi Participant Task Support Systems Research Group, CMIS UT Austin.
Internet : sukumar@emx.utexas.edu
Home : #3011 Whitis Avenue, Apt #106, Austin TX 78705. Tel: 512-474-2771
Office : MSIS Dept., CBA 5.202, The University Of Texas, Austin TX 78712