This content has been marked as final. Show 3 replies
The restart issue is not something that is controlled by the xtra in
specific or Director in general. It is an issue with the graphic driver
and/or OS. Win 95 and 98 were particularly bad in that the default
drivers tended to require a restart. You, as the Director program
maker, have absolutely no way of controlling if your client's machine
will require a restart (unless you are setting up a kiosk with known
hardware/software). So in answer to your question, yes. Both methods
will have the same chance of requiring a restart.
BuddyAPI's baSetDisplay and baSetDisplayEx commands have a "test" mode
which lets you see if a restart will be required, so you can program it
in yourself to check and then change the resolution only if a restart is
As far as making sure that the screen resolution aspect ration stays the
same, that will also require a bit of coding. You need to use
baScreenInfo("height") and baScreenInfo("width") to find out the current
settings, from there, figure out the aspect ratio, then set it to a new
setting with the given aspect ratio.
All that being said, just be very careful when you are changing the
screen resolution of random people's computers. In the case where your
program may crash, that may cause the screen res to not get reset to
their original one. Folks get upset about stuff like that (at least I
know it really pisses me off when someone decides they know what is best
for my computer and then mess up).
After you change the screen res, then change it back once the program is
done, sometimes it will cause all of the icons on the person's desktop
to move over to the left side. Again, that will really upset folks who
like to have their icons where they set them.
It is often the best bet to just put up a message on the users screen
saying that the program will look best at <insert your favourite
resolution here>. Then the user will be able to change it by themselves
if they choose to. Or you can say "Would you like me to change it now",
allowing the user to opt out. It is totally up to you, but just remember
that angering your users is generally considered a bad move.
Yeah, I had a suspicion that the restart was hardware/OS specific and that the Resolution Xtra 2.0 web page was just glossing over the issue.
As for the ethics of switching on the fly, I'm saving various settings options in an ini file. The user would have the option to turn switching on but the default would be off. My dilemma is that this project was handed to me well under way at a resolution of 800 x 600 which on contemporary monitors looks kinda small (I favor 1024 x 768 as a minimum spec). The project is text heavy so I don't want to just scale the drawRect. In the event of a crash I could offer to "repair" the user's resolution, this would be accomplished by recording the original resolution setting in the ini file and include a flag in the ini file for normal program exit ... on the next run if the normal exit flag isn't set we can suspect we're recovering from a crash and we can offer to restore the resolution to the recorded value, not the current value which is probably a hold over from the last run. What do you think, a reasonable approach or not worth the effort? I could just tell everyone to get glasses ;-)
Of course, I have to admit, I didn't think about the icons jumping all over the screen. Games pull off resolution switching without messing with the desktop, I wonder how they get away with it?
PS: Buddy API is a little unclear about the xplatform capability of baSetDisplay and baSetDisplayEx. The help files say these are both Win only but the website says baSetDisplay is Mac compatible but baSetDisplayEx isn't ... I don't have a Mac here at home so I can't easily test until I'm back in the office.
I don't know how the games do it, but I have seen some 3rd party
applications that act as a resolution switcher/launcher for projectors.
Basically, it is a small stub movie that changes the resolution, then
launches the projector and monitors the status of the projector. When
the projector closed (or crashes), then this other program will set the
resolution back to what it was to begin with. It shouldn't be too hard
to write up something like that if you don't want to use a 3rd party
proprietary solution. I can't think of the name of any of these, but
I've seen loads... I suspect a google search will turn up a few.
As far as x-plat, I have never tried using these commands on a Mac (I
only used them on PC once and was unsatisfied with the results, and
never tried again). I guess you'll just have to try it and see how well
it works for you.