SyntaxBomb - Indie Coders

Languages & Coding => BlitzMax / BlitzMax NG => Topic started by: Midimaster on July 02, 2021, 13:47:17

Title: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 02, 2021, 13:47:17
Maybe this helps somebody....

If you build a App on BlitzMAX for MAc OsX BigSur and you are not listed as a registered Developer (99,oo$) your app will not start on the user's computer.

But there is a trick:

After downloading your app the user will find it in his DOWNLOAD folder.

Now hold down CRTL-Key and click on the app.
A dialog will appear.
Now hold down again the CRTL-Key and click at OPEN
Another dialog will appear
Now click at OPEN

This will open the app and change it's state from "unknown" to "secure".
This means that from now on the app can be started normal as any other app on the mac.
Title: Testing Start on a new MAC?
Post by: Midimaster on July 03, 2021, 07:40:54
I only have 2 users with new MACs who report problems in starting one of my apps. One is a female teacher without much computer skills, one is a 85 year old man. I build an update of the app for them and it runs perfect on my new MAC.

I asked both to test this new version.

But now the female teacher still reports, that the app gives an error report. Something like (translated) "Upps ...this file not longer exists...".  I'm a little helpless because my version runs perfect. Now I would like to hear a second opinion from somebody with more skills.

Can somebody of the community please make a short test with the app? You only have to download the app and follow the procedure in post #1. Then the app starts. Answer the licence question with "Cancel" and then wait 2-3 seconds until you can click on "Continue". That's all. Does the app crash now? Deeper tests are not necessary for the moment.

It needs to be a MAC from 2018 and later. Here is the download file (5MB):
http://www.midimaster.de/download/AurisOsxBigSur.zip


Title: Re: Installing a BlitzMax App on user MAC
Post by: MikeHart on July 03, 2021, 07:57:08
Why does the machine has to be from 2018 and later?
Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 03, 2021, 08:28:04
It has to be a "64bit-only"-MAC. because only users of this models report problems. Of course you can also test it on older version if you like.
Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 04, 2021, 07:08:20
Now a user with a 2020 MAC reports, that my way descriped in post #1 does not work on his computer.

My workaround was:
Now on my MAC (2018) appears a menu where I have three options. One of them is "Open". When I select this the app is accepted forever.

The user reports that on his MAC (2020) in this last step he only has two options: "Cancel" and "Move-To-Bin".

Can somebody with a MAC younger than 2019 please verifiy and confirm this behavior? I cannot believe it!


#UPDATE#

Now I found a hack for enabling all software from all sources:

1. You open the app TERMINAL in your MAC

2. Then you enter:

sudo spctl --master-disable

3. Then you press ENTER

4. Then you enter your password (characters will not be repeated in the console)

5. Then you press ENTER


Now will have three entries in the security settings of your MAC

QuoteAlow apps downloaded from:
- App Store
- App Store and identified developers
- Anywhere


From now on you can switch between these three options depending on the software you want to install
Title: Re: Installing a BlitzMax App on user MAC
Post by: Qube on July 04, 2021, 07:47:13
Wow, that's pretty excessive to ask users to do that :o - Its like saying "Here is my app but you'll have to disable its security so anything can run"

It's pretty simple to open your none signed app :

Hold down the option key > right mouse click on the app > select Open from the context menu and then select Open again the popup window. The app will then be marked as OK to open on your Mac.

Do NOT advise your customers to unknowingly disable their Mac's security.

Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 04, 2021, 09:07:58
QuoteHold down the option key > right mouse click on the app > select Open from the context menu and then select Open again the popup window. The app will then be marked as OK to open on your Mac.

Tested on MAc 2020?
Title: Re: Installing a BlitzMax App on user MAC
Post by: Steve Elliott on July 04, 2021, 09:17:02
Quote
Do NOT advise your customers to unknowingly disable their Mac's security.

Quite right.

Quote
Tested on MAc 2020?

Something to be suggested, if it works or not is irrelevant because disabling your customer's security is a bad idea and could get you in trouble if the user gets hacked.

Pay and make an official build.
Title: Re: Installing a BlitzMax App on user MAC
Post by: iWasAdam on July 04, 2021, 12:34:49
As above - Very loud - NOOOOOOOOO
Title: Re: Installing a BlitzMax App on user MAC
Post by: Qube on July 04, 2021, 14:39:13
Quote from: Midimaster on July 04, 2021, 09:07:58
Tested on MAc 2020?
Tested on : Mac mini 2012 / Mac mini 2018/2020 ( intel ) and Mac mini 2020 ( M1 ) - It doesn't matter the model but the OS version since Apple increased the system security.

Doing the "Hold down the option key > right mouse click on the app > select Open from the context menu and then select Open again in the popup window." is the correct method a user has so should they want to open that app they can at their own risk. Sometimes you may need to use the "xattr -cr /path/to/application.app" command if an app reports it's damaged but you know it isn't.

Regardless, never ever ask a user to disable system security and put THEIR system at risk. Instead provide an instructions text file detailing what they can do to run YOUR app and why they need to do that and then it's THEIR choice if they want to go ahead.
Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 05, 2021, 08:23:43
At the Hotline I first suggested exact what Qube writes:
Quote...Doing the "Hold down the option key > right mouse click on the app > select Open from the context menu and then select Open again in the popup window." is the correct method a user has...

But the users reported, that this does not work. So I did some resarch on Apple's support pages. And there is a new approach:
download the app
1. open in  finder:"downloads"
2. hold CTRL then click the app once
3. hold CTRL again, then click open

It looks like instead of OPTION KEY now Apple now uses CTRL KEY for this:

Apple Support:
https://support.apple.com/en-us/HT202491
Quote...  If you're prompted to open the app in Finder and you're sure you want to open it despite the warning, you can control-click the app, choose Open from the menu, and then click Open in the dialog that appears. Enter your admin name and password to open the app. 

This worked on my 2018 MAC MINI, but I needed an additional setting in the security settings: Change...
"allow downloads from app store"
...to...
"allow downloads from appstore and identiefied developers"

With this approach I had a new phone call with the user. We tried 1 hour together, but had no change to start the app on his computer.

Then I found the new support text with the "sudo..." hack , which enables to add a third feature "open from Anywhere" to the security menu. This DOES NOT mean remove all the security features but enables users to switch for a short moment to this option then start the app once, then close the feature immediately again back to "allow downloads from app store". This third option was standard on all mac Osx until 2014 and it is still  Part of the OsX, but not visible.

QUBE's Test on MAC 2020

For me it sounds strange that QUBE was able to start my app...
http://www.midimaster.de/download/AurisOsxBigSur.zip
... with the old approach on a MAC 2020. So thank you for reporting me this. I will continue investigating, why this does not work on our MACs. Are there different MAC's?

Did somebody else try to start my app on a new MAC. help is still welcome!!!



Title: Re: Installing a BlitzMax App on user MAC
Post by: Qube on July 05, 2021, 10:14:36
It is the control key and not the option key. Hold Control > Right mouse click > Select Open
Title: Re: Installing a BlitzMax App on user MAC
Post by: Steve Elliott on July 05, 2021, 11:01:51
No it's the 'Command' Key and right click open.  But the app does not function correctly, the background window flashes multi-coloured garbage, there's a menu that takes user information and doesn't seem to progress and a small menu that doesn't function either...But I was able to run it easily without turning off security globally.

I have a 2017 MacBook Pro.
Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 05, 2021, 12:14:50
Quote from: Steve Elliott on July 05, 2021, 11:01:51
..  But the app does not function correctly, the background window flashes multi-coloured garbage, there's a menu that takes user information and doesn't seem to progress and a small menu that doesn't function either...But I was able to run it easily without turning off security globally. I have a 2017 MacBook Pro....

Thank you for this detailed report. I did convert the old code to BlitzMax NG and then transfered it to a MAC MINI 2018 with OsX BigSur (11.4) with an XCode 12.5.1. I did no changes at security* and created no security exceptions for AURIS on this MAC. Here I compiled it with BlitzMax NG and it runs perfect on my machine.

*)What do you exactly mean with "...turning off security globally..."?

Do you have any ideas, what could be the reason for the bugs?


Quote...there's a menu that takes user information and doesn't seem to progress....
this should enable to enter the licence key, but it should have a "Cancel"-button to continue without key.
Title: Re: Installing a BlitzMax App on user MAC
Post by: Steve Elliott on July 05, 2021, 13:08:00
Quote
*)What do you exactly mean with "...turning off security globally..."?

You seemed to be suggesting a hack to get your app to run, followed by Qube, Adam and myself telling you not to suggest this to users.  Just press the command key, right click on the warning and press open is all that is required.

Quote
Do you have any ideas, what could be the reason for the bugs?

Quote
I did convert the old code to BlitzMax NG.

Maybe that?  Perhaps the NG guys could point out possible differences you are not aware of.
Title: Re: Installing a BlitzMax App on user MAC
Post by: Qube on July 05, 2021, 13:14:46
Quote from: Steve Elliott on July 05, 2021, 11:01:51
No it's the 'Command' Key and right click open.  But the app does not function correctly, the background window flashes multi-coloured garbage, there's a menu that takes user information and doesn't seem to progress and a small menu that doesn't function either...But I was able to run it easily without turning off security globally.

I have a 2017 MacBook Pro.
It's definitely the 'control' key here. Just tested again for sanity. Control Key > Right mouse click > Click Open >> Popup window, erm popups up > Click Open.  \o/
Title: Re: Installing a BlitzMax App on user MAC
Post by: Steve Elliott on July 05, 2021, 13:22:51
lol come on Apple, some consistency. Command Key on MacBook Pro with Big Sur. Nothing else works.
Title: Re: Installing a BlitzMax App on user MAC
Post by: iWasAdam on July 05, 2021, 13:44:50
control key + mouse click opens app menu - then click "open"
Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 05, 2021, 16:15:26
this may explain the installation problems the user had...

I told him only to use the CTRL-Key. Maybe he should try it again with CMD-Key ...


As I have not a single problem with my app I can not simulate his problems.
Did you all try this with my AURIS-App Version 1.10 from the download?

I would like to know what happended afterwards.
Did you reach the licence dialog?
Have you been able to CANCEL the dialog.
Did you now reach the DEMO-Version -Dialog?
Have you been able to click on CONTINUE?
Did you also see garbage colors instead of a blue canvas in the background (like Steve reported)?
Did anybody get the message (Something like translated) "Upps ...this file not longer exists..."?


Title: Re: Installing a BlitzMax App on user MAC
Post by: Steve Elliott on July 05, 2021, 21:01:21
Ok after a few tests, CTRL does not work for me...BUT for the other two keys you must *hold down* either the Option or Command key, letting go of the key and the menu changes.  You can then simply select Open to allow the program to run.

Quote
Did you all try this with my AURIS-App Version 1.10 from the download?

Yes.

Quote
Have you been able to CANCEL the dialog.

Yes.

Quote
Did anybody get the message (Something like translated) "Upps ...this file not longer exists..."?

No.

Quote
Did you also see garbage colors instead of a blue canvas in the background (like Steve reported)?

Midimaster I wonder if the graphics cards are the problem?  Mine is an Intel Iris Plus Graphics 640 1536 MB.
Title: Re: Installing a BlitzMax App on user MAC
Post by: iWasAdam on July 06, 2021, 06:51:28
Did you reach the licence dialog?
yes

Have you been able to CANCEL the dialog.
no

Did you now reach the DEMO-Version -Dialog?
yes

Have you been able to click on CONTINUE?
yes

Did you also see garbage colors instead of a blue canvas in the background (like Steve reported)?
no

Did anybody get the message (Something like translated) "Upps ...this file not longer exists..."?
no - but upps is the link html page

there are a lot of niggles with the UI and Mac apps:
1. very wierd ui colors for licence dialog
2. completely non standard menu items
- file should be second
- options should be help
- duplication of menu items with different name (exit/quit) etc
Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 06, 2021, 08:07:37
Here are 4 screenshots how the start on a mac should look like:

1.licence window:
(https://www.syntaxbomb.com/blitzmax-blitzmax-ng/installing-a-blitzmax-app-on-user-mac/?action=dlattach;attach=4692)



2.demo-dialog window:
(https://www.syntaxbomb.com/blitzmax-blitzmax-ng/installing-a-blitzmax-app-on-user-mac/?action=dlattach;attach=4694)



3.running without selected anything:
(https://www.syntaxbomb.com/blitzmax-blitzmax-ng/installing-a-blitzmax-app-on-user-mac/?action=dlattach;attach=4696)



4.selected Theme-Intervals-Dictation:
(https://www.syntaxbomb.com/blitzmax-blitzmax-ng/installing-a-blitzmax-app-on-user-mac/?action=dlattach;attach=4698)


Mac Menu Problems

Quote from: iWasAdam on July 06, 2021, 06:51:28
...there are a lot of niggles with the UI and Mac apps:
1. very wierd ui colors for licence dialog
2. completely non standard menu items
- file should be second
- options should be help
- duplication of menu items with different name (exit/quit) etc...

I see, what you mean... But the first three menus are not mine. I only created "File", "Theme" and "Options"
This must be something system default at the mac. Do you know, where I can manipulate it?

By the way.... starting MaxIDE: it looks the same way.
It looks like these are limitations by BlitzMax MAC
Title: Re: Installing a BlitzMax App on user MAC
Post by: Steve Elliott on July 06, 2021, 08:53:42
Midimaster are you clearing the screen each frame?  If not then that might explain the garbage.
Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 06, 2021, 09:26:32
Quote from: Steve Elliott on July 05, 2021, 21:01:21

Did you also see garbage colors instead of a blue canvas in the background (like Steve reported)?
Midimaster I wonder if the graphics cards are the problem?  Mine is an Intel Iris Plus Graphics 640 1536 MB.


Steve, I found a code part that could be perhaps responsible for the flicker. In my own "music education-SDK" there was a old function that produce flickers if somebody tries to use the app on a not conform OS. The code to find out the OS was:
Code (BlitzMax) Select

Function DiesesOs%()
?MacOs
Return 0
?Win32
Return (GetVersion() & $f)*10  + ((GetVersion() Shr 8) & $f)
?
End Function


This should return 0 in case of OsX or a number in case of WINDOWS. But now I see that if none of the both systems if "valid" this function can return NULL. This maybe could cause errors in other code parts of the code (like the flicker)

By the way... This would mean that the compiler directive
?MacOs
would not work correct on BlitzMax NG.

I replaced the function with ...
Code (BlitzMax) Select
Function DiesesOs%()
Return 0
End Function

...because I dont not need this functionality in AURIS


Could you please be so kind and download the new version 1.11 to your computer again?
Version 1.11: http://www.midimaster.de/download/AurisOsxBigSur.zip

The test whether the flicker is still there.

Thanks a lot.
Title: Re: Installing a BlitzMax App on user MAC
Post by: Derron on July 06, 2021, 09:36:01
Quote from: Midimaster on July 06, 2021, 09:26:32
Code (BlitzMax) Select

Function DiesesOs%()
?MacOs
Return 0
?Win32
Return (GetVersion() & $f)*10  + ((GetVersion() Shr 8) & $f)
?
End Function


This should return 0 in case of OsX or a number in case of WINDOWS. But now I see that if none of the both systems if "valid" this function can return NULL. This maybe could cause errors in other code parts of the code (like the flicker)

No ... It does not return "Null" ... it returns "0" as the returned value is an integer - and integer of "nothing" is in BlitzMax "0".

so for Mac and "undefined OS" it returns "0".


bye
Ron
Title: Re: Installing a BlitzMax App on user MAC
Post by: Steve Elliott on July 06, 2021, 10:39:10
Still flicker and garbage in the new version.  But like I said, are you clearing the canvas each frame?  If not that could cause flicker.
Title: Re: Installing a BlitzMax App on user MAC
Post by: iWasAdam on July 06, 2021, 10:56:56
One thing to really think about with macos and blitzng is this:
almost all of what makes a mac a mac, YOU will have to sort out in your app yourself. blitzNG 'may' do a bit here and a bit there. but in general YOU will have to find out where it is doing things differently and write your own patches to make it 'correct'

E.G.
the menu thing
Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 06, 2021, 11:52:52
thanks to you both. I will again check twice whether I have any FLIP problems.
The code is quit easy and called by Events:
Code (BlitzMax) Select

While WaitEvent()
'Print "!"
   Select EventID()
Case EVENT_TIMERTICK
TimerTickt()  ' calls also casualy Malen()

    Case EVENT_GADGETPAINT
Malen
        ...
end select



Function Malen()
Local Fenster:TGraphics=CanvasGraphics(mdi.Canvas)
SetGraphics Fenster
SetAlpha 1
SetColor 255,255,255
SetScale 1,1
SetClsColor 44,55,88
Cls
SetColor 64,75,108
DrawRect HellBalkenX,0,300,1200

Local dm%=DemoWindow.Taster()
Select SpielMode
Case KEIN_SPIEL
PapierText= LocalizeString("{{Phrase4}}")
Case FINDE_INTERVALL
Spiel_FindeIntervall
Case FINDE_AKKORD
Spiel_FindeAkkord
Case FINDE_MELODIE
Spiel_FindeMelodie
Default

End Select
If AlleButtonSichtbar=AN
ButtonTyp.DrawAllButtons()
EndIf
If InstrumentSichtbar=AN
Smilys()
If dm=0 CheckSmily()
KlavierTyp.Draw
MonoChord.Draw
EndIf
TextPaperGame
DrawPunkte
If NotenSichtbar=AN
Noten.Draw
If dm=0 Noten.ChangeOneAtMaus
EndIf
DemoWindow.DemoRotierer()
Flip 0

If AktivesFenster()=LektionenAssistent.Window
Fenster:TGraphics=CanvasGraphics(LektionenAssistent.Canvas)
SetGraphics Fenster
SetAlpha 1
SetColor 255,255,255
SetScale 1,1
SetClsColor 255,245,235
Cls
AssiText.Draw
ShowAssistent
Flip 0
EndIf
End Function


It starts with a CLS and ends with a FLIP. Between this all emelents are drawn. The last element is the rotating word "DEMO" if it is a demo version.

Only if additional the LektionenAssistent.Window is activ there is a second Canvas-Action. But this is off when starting the app.

So you see, it looks very harmless and tidy.


My biggest problem is still that it runs on my mac perfect. This makes it difficult to find the reason. Only with collges like you I can move forward.

Thanks again to the awesome community here.

Mac Menu

Quote from: iWasAdam on July 06, 2021, 10:56:56
... but in general YOU will have to find out where it is doing things differently and write your own patches to make it 'correct'
E.G.
the menu thing

Does somebody with BlitzMax NG know how to get into these 3 mac-pre-defined menu entries? At the moment I coded only my 3 menus and there are added as column no. 4, 5 and 6 in the  mac menu.


Global Menus:Tgadget[70]

Const MENU_FILE%=1 , MENU_SPIEL%=2 , MENU_OPTI%=5
Const MENU_EXIT%=15  ,MENU_OPEN%=10, MENU_CREATE%=11
Const MENU_GRUPPE_INTERVALL%=20,MENU_INTERVALL%=21, MENU_WIS_INTERVALL%=22
Const MENU_GRUPPE_AKKORD%=30, MENU_AKKORD%=31,MENU_WIS_AKKORD%=32
Const MENU_MELODIE%=40
Const MENU_INTERNET%=50 ,MENU_ABOUT%=51, MENU_HELP%=52 , MENU_UPDATE%=53, MENU_PARA%=54,MENU_LIZENZ%=55
Const MENU_LANG%=60

Function FormLoad()
Local flags%=WINDOW_DEFAULT|WINDOW_CLIENTCOORDS
Window= CreateWindow("AURIS" , 100 , 100 , WindowBreite , WindowHoehe , Null , Flags%)

Canvas=CreateCanvas(0 , 0 , GadgetWidth(Desktop()), GadgetHeight(Desktop()) , Window)
SetGadgetLayout Canvas , 1,1,1,1


Menus[MENU_FILE] = CreateMenu("{{File}}   ",0,WindowMenu(Window))
Menus[MENU_OPEN] = CreateMenu ("{{Open}}                   " , MENU_OPEN , Menus[MENU_FILE],0,0)
Menus[MENU_CREATE] = CreateMenu ("{{Create exercise}}                   " , MENU_CREATE , Menus[MENU_FILE],0,0)
CreateMenu "" , 0 , Menus[MENU_FILE] ,0,0
Menus[MENU_EXIT] = CreateMenu ("{{Exit}}" , MENU_EXIT , Menus[MENU_FILE] ,0,0 )
Menus[MENU_SPIEL] = CreateMenu("{{Theme}}   ",0,WindowMenu(Window))
Menus[MENU_GRUPPE_INTERVALL]= CreateMenu(  "{{Intervalls}}" , MENU_INTERVALL , Menus[MENU_SPIEL] ,0,0 )
Menus[MENU_INTERVALL]= CreateMenu(  "{{Listening}}" , MENU_INTERVALL , Menus[MENU_GRUPPE_INTERVALL] ,0,0 )
Menus[MENU_WIS_INTERVALL]= CreateMenu(  "{{Dictation}}" , MENU_WIS_INTERVALL , Menus[MENU_GRUPPE_INTERVALL] ,0,0 )

Menus[MENU_GRUPPE_AKKORD]= CreateMenu(  "{{Chords}}" , MENU_AKKORD , Menus[MENU_SPIEL] ,0,0 )
Menus[MENU_AKKORD]= CreateMenu(  "{{Listening}}" , MENU_AKKORD , Menus[MENU_GRUPPE_AKKORD] ,0,0 )
Menus[MENU_WIS_AKKORD]= CreateMenu(  "{{Dictation}}" , MENU_WIS_AKKORD , Menus[MENU_GRUPPE_AKKORD] ,0,0 )

Menus[MENU_MELODIE]= CreateMenu(  "{{Melody}}" , MENU_MELODIE , Menus[MENU_SPIEL] ,0,0 )
Menus[MENU_OPTI] = CreateMenu("{{Options}}   ",0,WindowMenu(Window))
Menus[MENU_ABOUT]= CreateMenu(  "{{Info about}} Auris" , MENU_ABOUT , Menus[MENU_OPTI] ,0,0 )

Menus[MENU_PARA]= CreateMenu(  "{{Parameter}}" , MENU_PARA , Menus[MENU_OPTI] ,0,0 )
Menus[MENU_INTERNET]= CreateMenu(  "Homepage Midimaster" , MENU_INTERNET , Menus[MENU_OPTI] ,0,0 )
Menus[MENU_HELP]= CreateMenu(  "{{Help}}" , MENU_HELP , Menus[MENU_OPTI] ,0,0 )
Menus[MENU_LIZENZ]= CreateMenu(  "{{Licence}}" , MENU_LIZENZ , Menus[MENU_OPTI] ,0,0 )

SwitchSomeMenus ([10,11], [0])
SwitchSprache IniClass.Value("", "Allgemein", "Sprache")
UpdateWindowMenu window
End Function





Title: Re: Installing a BlitzMax App on user MAC
Post by: Derron on July 06, 2021, 12:11:50
Code (Blitzmax) Select

        If AktivesFenster()=LektionenAssistent.Window
                         Fenster:TGraphics=CanvasGraphics(LektionenAssistent.Canvas)
                        SetGraphics Fenster


"Fenster:TGraphics=" is not needed. "Fenster =" will do too (but makes no difference at the end :)

So ... what is "SetGraphics" doing ?

SetGraphics() is defined in "brl.mod/graphics.mod"
Code (BlitzMax) Select

Function SetGraphics( g:TGraphics )
If Not g
If _driver And _graphics _driver.SetGraphics Null
_graphics=Null
_gWidth=0
_gHeight=0
_gDepth=0
_gHertz=0
_gFlags=0
_gx=0
_gy=0
Return
EndIf
Local d:TGraphicsDriver=g.Driver()
If d<>_driver
If _driver And _graphics _driver.SetGraphics Null
_graphicsModes=Null
_driver=d
EndIf
g.GetSettings _gWidth,_gHeight,_gDepth,_gHertz,_gFlags,_gx,_gy
d.SetGraphics g
_graphics=g
End Function

- if no "g" was passed, a reset would be done
- if "g" was passed but using a different driver (eg you switch from OGL to DX on Windows) the old object would be cleaned up
- in all cases some settings would be read (GetSettings...) and
- in all cases the driver's "SetGraphics" would be called


(driver).SetGraphics is most probably from brl.mod/glmax2d.mod/glmax2d.bmx (as you talk about Mac OS and DX is not available there :) ):
Code (Blitzmax) Select

Method SetGraphics( g:TGraphics ) Override
If Not g
TMax2DGraphics.ClearCurrent
GLGraphicsDriver().SetGraphics Null
Return
EndIf

Local t:TMax2DGraphics=TMax2DGraphics(g)
Assert t And TGLGraphics( t._graphics )

GLGraphicsDriver().SetGraphics t._graphics

ResetGLContext t

t.MakeCurrent
End Method


As you see, it will call these three lines each time you call "SetGraphics Fenster":
Code (Blitzmax) Select

GLGraphicsDriver().SetGraphics t._graphics

ResetGLContext t

t.MakeCurrent



OK ... and if this leads to flicker or issues (eg the project matrix blows up or whatever...) then maybe we could simply skip that?

Code (Blitzmax) Select

       If AktivesFenster()=LektionenAssistent.Window
                        'only set new graphics if needed
                        if Fenster <> CanvasGraphics(LektionenAssistent.Canvas)
                          Fenster=CanvasGraphics(LektionenAssistent.Canvas)
                          SetGraphics Fenster
                        endif

A pity in your case it wont be "skipable" as you always set the canvas back to "mdi.canvas" at the begin of Malen(). So take this code just as a simple "showcase" on how to avoid doing stuff if not needed.


So something to say about the begin of Malen()

Function Malen()
                Local Fenster:TGraphics=CanvasGraphics(mdi.Canvas)
                        SetGraphics Fenster

The issue here is that you cannot check if the current graphics object is "mdi.canvas" ("Fenster") already.
For this you would need to backup the current graphics object each time you "SetGraphics" a new one.

Code (BlitzMax) Select

global currentGraphics:TGraphics


SetGraphics theOneToSet
currentGraphics = theOneToSet

(Or call a custom function "MySetGraphics()" which automates that for you).

Using the currentGraphics set means you could skip setting the mdi.canvas on each call to Malen() - as long as other canvases weren't "activated" (SetGraphics).


I am NOT knowing if this helps or not - but it minimizes "switches" between the canvases and potential issues inside the functions called on canvas changes.


PS: Next to brl.glmax2d you could always try if the sdl.mod-stuff works better.

bye
Ron
Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 08, 2021, 09:26:16
Quote from: Steve Elliott on July 06, 2021, 08:53:42
Midimaster are you clearing the screen each frame?  If not then that might explain the garbage.

Steve, may I ask you for help again?

I reduced the code at the Malen() function to a basic minimum. I added Derron sugesstion of not calling always the SetGraphics(), I removed to rotating DEMO word temporary. I set the Timer-Tick to 60Hz, I remove the double calling of Malen(). Now it is only called once by TimerTickt().

Code (BlitzMax) Select
Function Malen()
Global Fenster:TGraphics
If Fenster=NULL
Fenster=CanvasGraphics(mdi.Canvas)
SetGraphics Fenster
Endif
SetAlpha 1
SetColor 255,255,255
SetScale 1,1
SetClsColor 44,55,88
Cls

SetColor 64,75,108
DrawRect HellBalkenX,0,300,1200
.....
TextPaperGame
DrawPunkte
If NotenSichtbar=AN
Noten.Draw
If dm=0 Noten.ChangeOneAtMaus
EndIf
' DemoWindow.DemoRotierer()
Flip 0
        Return
.......



All I want to know is again: do you still see the color garbage when starting the app? As a second test you could select "THEME INTERVALL - LISTENING" from the menu and report whether you see this:
(https://www.syntaxbomb.com/blitzmax-blitzmax-ng/installing-a-blitzmax-app-on-user-mac/?action=dlattach;attach=4698)
(Dont worry, when you cannot do anything in this testversion: Mouseactions are ignored)


Then close the app

This time I used a new link. Version 1.12:
www.midimaster.de/downloads/AurisTest.app.zip


Of course everybody else with a MAC can also help testing the app.
Title: Re: Installing a BlitzMax App on user MAC
Post by: Steve Elliott on July 08, 2021, 10:23:29
Sure, no problem.

I still get the garbage, but it's not flashing like mad now - just a quick flickering.

Great.  Now *everything* on my Mac screen is flickering.  BlitzMaxNG seems unstable!

Title: Re: Installing a BlitzMax App on user MAC
Post by: Derron on July 08, 2021, 10:51:07
so the "flashing" was possibly based on the glcontext-thing (SetGraphics call).

Now this is reduced and not done so often - "quick flickering".


If now "everything" is flickering then maybe the OpenGL support in Steves Mac OS is ... not as it should (or no longer "100% compatible").
Maybe we should try to replicate the issue in a custom little maxgui-app (doing stuff on two canvases, switching around).
Having a "open source" test app allows mac users to compile the test stuff on their own devices.

Maybe one could then test if sdl.mod (and the opengl stuff in there) does a better job.


bye
Ron
Title: Re: Installing a BlitzMax App on user MAC
Post by: Steve Elliott on July 08, 2021, 10:57:13
My mac was working perfectly fine before BlitzMaxNG screwed it up!   >:(
Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 08, 2021, 12:06:17
Upps.... sad to hear this... I would not think this is possible.

I do nothing special with the Mac. Are you too using BlitzMax NG?

I do not use any modules related to graphics, etc... Only the standard BlitzMax approach.
I do not select any driver, etc..

My MAC MINI has a different graphic card than you have: Intel UHD Grpahics 630 1536MB


Startup-Sequence:
Code (BlitzMax) Select

SuperStrict

Import koriolis.zipstream
Import BaH.RtMidi
Import MaxGUI.Drivers

' my own code sources:
Include "AurisFunktionen.bmx"
Include "AurisKonstanten.bmx"

Include "AurisAudio.bmx"
Include "AurisIntervall.bmx"
Include "AurisAkkorde.bmx"
Include "AurisMDI.bmx"
Include "AurisLaden.bmx"

Include "AurisAssi.bmx"
Include "AurisMelodie.bmx"
Include "AurisPara.bmx"
Include "Tastatur.bmx"

' codes sources over all my projects:
Include "../Gemeinsam\Lizenz.bmx"
Include "../Gemeinsam\LizenzenDemo.bmx"
Include "../Gemeinsam\Klassen.bmx"


AppTitle="Auris"

Incbin "DATEN.ZIP"
SetzePfade
DatenPfad="ZIP::Incbin::DATEN.ZIP//"
KopiereAppDateien

Lizenz.VersionsString="1.10"

If DatenPfad.Contains("::")
IniClass.Schreiben "","Allgemein", "LastStart", CurrentDate() + " " + CurrentTime()
EndIf

' language:
Global Language:TMaxGUILanguage[9] , AktSprache%=1
SprachLoader 0,"english"
SprachLoader 1,"deutsch"
SprachLoader 2,"czech"
SprachLoader 3,"new"
SetLocalizationMode(LOCALIZATION_ON|LOCALIZATION_OVERRIDE)
SetLocalizationLanguage Language[AktSprache]

DatenLaden
MDI.FormLoad    ' loads Main- Window (here only menu and one canvas)
InfoFenster.FormLoad
Lizenz.Formload

If Lizenz.Ok()>0
ShowGadget Lizenz.Window
DisableGadget MDI.Window
EndIf

KopiereStdDateien
LektionenBrowser.FormLoad
LektionenAssistent.FormLoad

DemoWindow.StartUp()
ChangeWindowTitle()

ErstelleAntwortButtons()
Noten.CreateIt 450,280,330,200
KlavierTyp.Create
MonoChord.Create
AktInstrument=IniClass.Value("","Allgemein", "Instrument")

CreateTimer 60

SpielMode=KEIN_SPIEL 'FINDE_INTERVALL
Sichtbar 0,0,0,0,0
SeedRnd MilliSecs()

AllesBeiResizeWindow
While WaitEvent()
   Select EventID()
Case EVENT_KEYDOWN
     .....



Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 08, 2021, 12:13:54
Quote from: Derron on July 08, 2021, 10:51:07
so the "flashing" was possibly based on the glcontext-thing (SetGraphics call).

no I think what Steve reports is a faster flickering. So the problem still remains. As I raised the Timer-Frequency from 20 to 60 this seems to be the reason for the new flickering speed.

It still looks like BlitzMax NG has a FLIP problem on this graphic card. For me it sounds like there is a second FLIP or VSYNC wich shows the content of an undefined buffer.

Very strange is now, that the problem remains after closing the app. I cannot see any reason for such a behavior. As I do not want to damage Steve's computer, I have to stopp the testing now.

Steve? Have you been ale to stop the flickering after a restart of the computer?


@Derron: What is this SDL-stuff?

another question could a Flip 1 instead of a Flip 0 help?
Title: Re: Installing a BlitzMax App on user MAC
Post by: Steve Elliott on July 08, 2021, 12:34:55
Quote
Steve? Have you been ale to stop the flickering after a restart of the computer?

No, but I'm working on updating Big Sur to see if that clears up the problem.

[Edit]
Yes the OS Update cleared the flickering problem.
Title: Re: Installing a BlitzMax App on user MAC
Post by: Derron on July 08, 2021, 13:24:56
sdl.mod ... you would need to use the framework command then, because else it loads stuff like "brl.SystemDefault", while sdl.mod provides its own "sdl.System". it also provides its own graphics modules SDL.glmax2d, SDL.gl2max2d ...

the SDL version uses different approaches to creating new windows etc - so stuff like multi-screen-setups do not lead to eg "apps being centered across multiple screens".


Nonetheless it would be good to see a barebone code sample which creates the windows similar to yours, painting via events, switching canvases.
This then needs to be checked on Steve's computer - and if others could replicate the issue, then the better (and then ... we could look for a fix).


Regarding "flickers" which is still happening even if your app is closed: it is not your fault. No worries. You wont be able to damage his computer this way. It is the fault of the OS - and whatever the (real) gpu drivers + the OS services are doing there (sparse OpenGL support...?). You are not requesting exclusive full screen stuff, so you wont even change anything like a desktop resolution or so. (remember that in earlier times a fullscreen resolution change + crashed app often lead to the resolution being stuck changed).


bye
Ron
Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 09, 2021, 08:21:41
Good to read that Steve could stopp the flickering problems by updating his OsX.

Now it looks like my AURIS app starts as expected also on users computers. Steve could you again test the regular version 1.11 from here:

http://www.midimaster.de/download/AurisOsxBigSur.zip

After closing both licence and demo window you should click on THEME- INTERVALL- LISTENING in the menu. That's all.


@DERRON:

Do you already know how to buid this MAC-conform menu? IWasAdam pointet me to the 6 column menu, but I only created 3 entries. It looks like MAC adds 4 menus by default: APPLE - APP NAME - VIEW - WINDOW

So it comes to this seqence in my AURIS app:

APPLE - AURIS- VIEW - WINDOW - FILE - THEME - OPTIONS

I think in a pure Mac app (reference: finder) the seqence should look like this:

APPLE - AURIS - FILE - THEME - VIEW - WINDOW - HELP
Title: Re: Installing a BlitzMax App on user MAC
Post by: Derron on July 09, 2021, 08:24:26
Nope I do not "already know how". I only have a Mac Mini to compile my game for Mac. Not using it for anything else yet (and also do not plan to do so).


bye
Ron
Title: Re: Installing a BlitzMax App on user MAC
Post by: Steve Elliott on July 09, 2021, 10:04:22
Well I stopped the flickering to the OS (even after your program was exited) by updating the OS version, but I don't want to risk breaking it again so won't be re-testing, sorry.
Title: Re: Installing a BlitzMax App on user MAC
Post by: iWasAdam on July 09, 2021, 10:12:40
here's what it looks like on bigsur with dark mode...
(https://vjointeractive.files.wordpress.com/2021/07/screenshot-2021-07-09-at-10.08.37.png)

You can see the UI is all light greys....
Title: Re: Installing a BlitzMax App on user MAC
Post by: Midimaster on July 09, 2021, 12:49:32
Quote from: iWasAdam on July 09, 2021, 10:12:40
here's what it looks like on bigsur with dark mode...
You can see the UI is all light greys....

Thank you for the screenshot. I will improve this after I'm sure to have solutions for all heavy problems. These have first priority at the moment:
- Install problems
- Flickering
- Menu entries
- Open zipped OGG-Sounds
- Strange HTTPS-error message when leaving the app


Much more I would be interested in a look into the main screen: MENU - THEME - INTERVALL- LISTENING

- any flickering?
- do you hear sound when clicking on the yellow buttons?


Quote from: Derron on July 09, 2021, 08:24:26
... I only have a Mac Mini to compile my game for Mac. Not using it for anything else yet ...
Ah, this sounds like you do not need a menu and do not use the MaxGui-Module in your games. Ok. I will try to find out something and report. Also this new MAC MINI will be there only for compiling.

(The old one I use for 24track recordings with my PRESONUS 24.4.2: https://www.youtube.com/watch?v=SyAJinDH-6Y )

Title: Re: Installing a BlitzMax App on user MAC
Post by: wadmixfm on July 10, 2021, 14:48:24
and it only does this on Big Sur ??

when i install my specdrum 2 app i dont get that issue

i created my install with packages

lee
Title: Re: Installing a BlitzMax App on user MAC
Post by: wadmixfm on July 10, 2021, 14:51:56
ignore me lol

i shot straight to the end and not read any other comment and thought it was because you couldnt install any app with big sur from blitzmax :)

sorry jumped the fence before getting on the horse lol

lee
Title: Re: Installing a BlitzMax App on user MAC
Post by: Baggey on July 17, 2021, 00:21:54
Ignore me too!

Fancy a cup off EARL GREY?

https://youtu.be/eELH0ivexKA

and just another

https://youtu.be/0iRTB-FTMdk

Dernire un

https://youtu.be/80hMEKlLVgQ

Baggey