[Vm-dev] Resizing the display
Levente Uzonyi
leves at elte.hu
Sun Aug 22 17:05:38 UTC 2010
Hi,
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.
Cheers,
Levente
More information about the Vm-dev
mailing list