Problem with 1.103

Archives Forums/Blitz3D Bug Reports/Problem with 1.103

steve_ancell(Posted 2009) [#1]
Sometimes it runs normal, but intermittently I get the message "Unable to set graphics mode", sometimes a few times in a row.

PC Specs:
Pentium 4 @ 3.0 GHZ
GeForce 5200 FX @ 128 MB
512 MB Ram

Using IDEal IDE

Here's the piece of code I was testing.

;#Region Custom Types
Type Menu
	Field menuName$
	Field itemList$	;Sub menu items
	Field itemListVisible	;True = Show items : False = Hide items
	Field x, y	;Screen coordinates of Menu
	Field nameBoxWidth	;Width of menu name box
	Field nameBoxHeight	;Height of menu name box
	Field itemBoxWidth	;Width of item box
	Field itemBoxHeight	;Height of item box
End Type
;#End Region


Function CreateMenu(x, y, menuName$, itemList$)
	Local firstTag
	Local lastTag
	
	Local itemNameStart
	Local itemNameEnd
	Local itemNameLength
	
	Local itemName$
	
	Local nameWidth
	
	Local m.Menu
	
	m.Menu = New Menu
	m\menuName$ = menuName$
	m\itemList$ = itemList$
	m\itemListVisible = False
	m\x = x
	m\y = y
	m\itemBoxWidth = 0
	m\itemBoxHeight = 0
	
	;Loop until (opening) tag is found
	For firstTag = 1 To Len(m\itemList$)
		If Mid$(m\itemList$, firstTag, 1) = "["
			
			;Loop Until (closing) tag is found
			For lastTag = firstTag To Len(m\itemList$)
				If Mid$(m\itemList$, lastTag, 1) = "]"
					itemNameStart = (firstTag + 1)
					itemNameEnd = lastTag
					itemNameLength = (lastTag - firstTag) - 1
					itemName$ = Mid$(m\itemList$, itemNameStart, itemNameLength)
					nameWidth = StringWidth(itemName$)
					
					If nameWidth > m\itemBoxWidth
						m\itemBoxWidth = nameWidth
					EndIf
					
					m\itemBoxHeight = m\itemBoxHeight + StringHeight("")
					
					firstTag = (lastTag + 1)
				EndIf
			Next
		EndIf
	Next
End Function


Function UpdateMenu()
	Local m.Menu
	
	For m.Menu = Each Menu
		If MouseX() > m\x And MouseX() < (m\x + StringWidth(m\menuName$))
			If MouseY() > m\y And MouseY() < (m\y + StringHeight(m\menuName$))
				If MouseHit(1)
					m\itemListVisible = m\itemListVisible Xor True
				EndIf
			EndIf
		EndIf
	Next
End Function


Function DrawMenu()
	Local firstTag
	Local lastTag
	
	Local itemNameStart
	Local itemNameEnd
	Local itemNameLength
	
	Local itemName$
	
	Local m.Menu
	
	Local itemX
	Local itemY
	
	For m.Menu = Each Menu
		Color 0, 100, 255
		Rect m\x, m\y, StringWidth(m\menuName$), StringHeight(m\menuName$), True
		Color 255, 255, 255
		Text m\x, m\y, m\menuName$
		
		If m\itemListVisible = True
			Color 0, 100, 255
			Rect m\x, (m\y + StringHeight("")), m\itemBoxWidth, m\itemBoxHeight, True
		EndIf
		
		itemX = m\x
		itemY = (m\y + StringHeight(""))
		
		;Loop until (opening) tag is found
		For firstTag = 1 To Len(m\itemList$)
			If Mid$(m\itemList$, firstTag, 1) = "["
				
				;Loop Until (closing) tag is found
				For lastTag = firstTag To Len(m\itemList$)
					If Mid$(m\itemList$, lastTag, 1) = "]"
						itemNameStart = (firstTag + 1)
						itemNameEnd = lastTag
						itemNameLength = (lastTag - firstTag) - 1
						itemName$ = Mid$(m\itemList$, itemNameStart, itemNameLength)
						
						If m\itemListVisible = True
							If MouseX() > itemX And MouseX() < (itemX + StringWidth(itemName))
								If MouseY() > itemY And MouseY() < (itemY + StringHeight(itemName))
									Color 255, 0, 0
									HighlightItem(itemX, itemY, itemName$)
								EndIf
							EndIf
						EndIf
						
						Color 0, 0, 0
						Text itemX, itemY, itemName$
						itemY = itemY + StringHeight("")
						firstTag = (lastTag + 1)
					EndIf
				Next
			EndIf
		Next
	Next
End Function


Function HighlightItem(x, y, itemName$)
	Rect x, y, StringWidth(itemName$), StringHeight(itemName$), True
End Function


Function DisposeMenu()
	Local m.Menu
	
	For m.Menu = Each Menu
		Delete m
	Next
End Function


Graphics 800, 600
SetBuffer BackBuffer()


Include "Pointer.bb"

CreateMenu(0, 0, "Menu1", "[MenuItem1][Item2][Item3][Item4]")
CreateMenu(100, 0, "Menu2", "[Item1][Item2][Item3]")
Repeat	
	UpdateMenu()
	Cls
	DrawMenu()
	DrawPointer()
	Flip
Until KeyHit(1)
DisposeMenu()
End



Abrexxes(Posted 2009) [#2]
no problems here, try:

Graphics 800, 600, 32, 1


bye


steve_ancell(Posted 2009) [#3]
That seems to have cured it, thanx Bud. ;)