[Vm-dev] Resizing the display

Levente Uzonyi leves at elte.hu
Sun Aug 22 17:05:38 UTC 2010


there's a primitive (92) which can be used to resize the display of 
Squeak. The primitive is called from DisplayScreen class >> 
#depth:width:height:fullscreen:. It's comment says:  "Force Squeak's 
window (if there's one) into a new size and depth.".

On windows:
Evaluating [DisplayScreen depth: 16 width: 1024 height: 580 fullscreen: 
true] will change the width and height on Windows, but the depth and 
fullscreen arguments are ignored. But that's acceptable, because there are 
other methods to set those (#newDepth: and #fullScreenMode:).

On unix:
Evaluating [DisplayScreen depth: 16 width: 1024 height: 580 fullscreen:
true] does nothing. The primitive is not implemented, it's just a stub 
that returns 0 - aka false. And that's a problem, because there's no way 
to resize the display.

We mostly use vm-display-null and RFB to control our remote images and we 
would like to resize the display. We have a shell script that accepts 3 
parameters (image_file width height) and changes the stored display 
size of the image, but it's cumbersome to use, because we have to quit the 
image to use the script.
So I changed the body of display_ioSetDisplayMode to the following:

   setSavedWindowSize((w << 16) + (h & 0xFFFF));
   return 1;

This implementation (mostly) behaves like the Windows version and would 
probably work for other unix display plugins and Mac too (IIRC on Mac this 
primitive is also unimplemented).

So I propose to change the minimal implementation of primitive 92 to this 
code (maybe with additional checks for the parameter values). This way we 
could have uniform behavior on all platforms.


More information about the Vm-dev mailing list