[07 Apr 2010] Strange Bug

Contains all messages from the Hollywood mailing list between 01/2006 and 08/2012
Locked
PEB
Posts: 576
Joined: Sun Feb 21, 2010 1:28 am

[07 Apr 2010] Strange Bug

Post by PEB »

Note: This is an archived post that was originally sent to the Hollywood mailing list on Wed, 07 Apr 2010 03:30:59 -0000

The following error is produce if the code below is used when the button is clicked the second time (to change the display from Full Screen to Windowed): "Cannot use this function while display is closed!" "In function: Wait Event"

Code: Select all

@DISPLAY {Width=640, Height=480, Color = #WHITE, Title = "Test", Layers=True}
CreateDisplay(2, {Width=200, Height=300})
SetFillStyle(#FILLCOLOR)
Box(0, 0, 50, 50)
Function p_ButtonFunc()
	ChangeVar=Not ChangeVar
	If ChangeVar=1
		ChangeDisplayMode(#DISPMODE_FULLSCREEN, 640, 480)
		OpenDisplay(2)
	Else
		ChangeDisplayMode(#DISPMODE_WINDOWED)
Wait(200); This is added to show that the Display Mode has changed without problem before the error.
		CloseDisplay(2)
	EndIf
EndFunction
ButtonTable={OnMouseUp=p_ButtonFunc}
MakeButton(1, #LAYERBUTTON, 1, False, True, ButtonTable)
Repeat
	WaitEvent
Forever
User avatar
airsoftsoftwair
Posts: 5830
Joined: Fri Feb 12, 2010 2:33 pm
Location: Germany
Contact:

[11 Apr 2010] Re: Strange Bug

Post by airsoftsoftwair »

Note: This is an archived post that was originally sent to the Hollywood mailing list on Sun, 11 Apr 2010 22:01:50 +0200
The following error is produce if the code below is used when the button is clicked the second time (to change the display from Full Screen to Windowed): "Cannot use this function while display is closed!" "In function: Wait Event"
It's not a bug :) WaitEvent() currently doesn't work if the active display is closed. Thus, you need to make your first display active again after closing the second one, i.e.

Code: Select all

CloseDisplay(2)
SelectDisplay(1)
Then it should work. In the long run, however, it is planned that WaitEvent() also works with closed displays but this needs much more work.
PEB
Posts: 576
Joined: Sun Feb 21, 2010 1:28 am

[11 Apr 2010] Re: Strange Bug

Post by PEB »

Note: This is an archived post that was originally sent to the Hollywood mailing list on Sun, 11 Apr 2010 22:53:30 -0000

That solved one problem, but there is still another one. Using the following code works the first time the display is changed to full screen, but if you try it again, the following error occurs: "Unable to change display size to 200x300" Apparently it is trying to make the second windowed display full screen as well.

Code: Select all

@DISPLAY {Width=640, Height=480, Color = #WHITE, Title = "Test", Layers=True}
CreateDisplay(2, {Width=200, Height=300})
SetFillStyle(#FILLCOLOR)
Box(0, 0, 50, 50)
Function p_ButtonFunc()
ChangeVar=Not ChangeVar
If ChangeVar=1
ChangeDisplayMode(#DISPMODE_FULLSCREEN, 640, 480)
OpenDisplay(2)
Else
ChangeDisplayMode(#DISPMODE_WINDOWED)
CloseDisplay(2)
SelectDisplay( 1)
EndIf
EndFunction
ButtonTable={OnMouseUp=p_ButtonFunc}
MakeButton(1, #LAYERBUTTON, 1, False, True, ButtonTable)

Repeat
WaitEvent
Forever
User avatar
airsoftsoftwair
Posts: 5830
Joined: Fri Feb 12, 2010 2:33 pm
Location: Germany
Contact:

[13 Apr 2010] Re: Re: Strange Bug

Post by airsoftsoftwair »

Note: This is an archived post that was originally sent to the Hollywood mailing list on Tue, 13 Apr 2010 22:29:41 +0200
That solved one problem, but there is still another one. Using the following code works the first time the display is changed to full screen, but if you try it again, the following error occurs: "Unable to change display size to 200x300" Apparently it is trying to make the second windowed display full screen as well.
Hmm, ok, this seems to be a bug. I'll fix this.

Just one word on your code: Using multiple displays in full screen mode is definitely not recommended. Hollywood currently doesn't forbid this, but it's somewhat likely that it will no longer work in future versions. In full screen mode there generally should be only one display. On Amiga, multiple displays will work fine in full screen mode because of the Amiga's unique screen concept but on Windows and Mac OS X there's really a good chance of running into trouble when trying to work with multiple displays in full screen mode because full screen mode might overtake the system completely with no access to the window manager at all. Hollywood might even lock the video buffer and draw to it directly in full screen mode in future versions. Thus, you should avoid working with multiple displays in full screen mode except if you are only targetting Amiga compatibles.
User avatar
airsoftsoftwair
Posts: 5830
Joined: Fri Feb 12, 2010 2:33 pm
Location: Germany
Contact:

[13 Apr 2010] Re: Re: Strange Bug

Post by airsoftsoftwair »

Note: This is an archived post that was originally sent to the Hollywood mailing list on Tue, 13 Apr 2010 23:07:42 +0200
That solved one problem, but there is still another one. Using the following code works the first time the display is changed to full screen, but if you try it again, the following error occurs: "Unable to change display size to 200x300" Apparently it is trying to make the second windowed display full screen as well.
Ok, actually, the bug is just the same as: http://forums.hollywood-mal.com/viewtopic.php?f=4&t=55

You get the error because display #2 does not entirely fit into the 640x480 screen bounds (because in windowed mode it is in the center of the screen, thus on a 1280x1024 screen it would have the coordinates of 535|344 or something). Displaying a 320x200 window at 535|344 on a 640x480 will have parts of the display off screen, that is why Hollywood is complaining. So to cut this short, just move the display #2 to 0,0 or something and it will work :)
PEB
Posts: 576
Joined: Sun Feb 21, 2010 1:28 am

[13 Apr 2010] Re: Strange Bug

Post by PEB »

Note: This is an archived post that was originally sent to the Hollywood mailing list on Tue, 13 Apr 2010 21:42:55 -0000

You are correct, selecting display 2 and moving it to the center fixes the problem.

Thanks!
Locked