Re: WinRT keep display on
David Ludwig <[email protected]>
| Newsgroups | gmane.comp.lib.sdl |
|---|---|
| Message-ID | <CAGDc1f=agDMiW1O9_=T9+UqTUqkt4CCxCZ1r9Vhwy2c2Ux2bKw@mail.gmail.com> |
I think that'll work. If not, I went ahead and made SDL manage its own DisplayRequest, via calls to SDL_EnableScreenSaver() and SDL_DisableScreenSaver() (via https://hg.libsdl.org/SDL/rev/db77073d402d ). To note, SDL2 will, by default, call SDL_EnableScreenSaver(). -- David L. On Sat, Aug 27, 2016 at 12:11 PM, hardcoredaniel <[email protected]> wrote: > Hi David, > > unfortunately that was the only message of the exception, "a function > being called at an unexpected time". > > I have googled a bit and found a suggestion to keep the DisplayRequest > object that the requestActive() was called on for the corresponding > requestRelease() call. This code does at least not crash immediately: > > > DisplayRequest ^ request = nullptr; > > void SetKeepDisplayOn(int keepOn) > { > > if (request == nullptr) > { > request = ref new DisplayRequest(); > if (keepOn != 0) > { > request->RequestActive(); > } > else > { > SDL_Log("Error: Trying to release display although not > acquired!\n"); > } > } > else > { > if (keepOn == 0) > { > request->RequestRelease(); > request = nullptr; > } > else > { > SDL_Log("Error: Trying to acquire display although already > acquired!\n"); > } > } > } > > but I can't say whether this is really correct and without side effects, > esp. w.r.t. the lifetime of DisplayRequest objects. Can you please take a > look at this code for obvious defects? > > Regards, > > Daniel > > > > ---------- Původní zpráva ---------- > Od: David Ludwig <[email protected]> > Komu: SDL Development List <[email protected]> > Datum: 27. 8. 2016 15:29:14 > Předmět: Re: [SDL] WinRT keep display on > > I'm not sure why this call isn't working. SDL's main thread on WinRT is, > at present, typically the main thread. > > Did the exception contain any more info? > > I can plan on looking into this when I get a chance, hopefully in within > the next few weeks, but make no guarantees. > > -- David L. > > > On Sat, Aug 27, 2016 at 7:54 AM, hardcoredaniel <[email protected]> > wrote: > > Hi David, > > I'm trying to keep the screen programmatically on for some time, but I'm > not doing it right. This is my simple code: > > -------------------------- > > using namespace Windows::System::Display; > > DisplayRequest ^ request = ref new DisplayRequest(); > > if (keepOn != 0) > { > request->RequestActive(); > } > else > { > request->RequestRelease(); > } > > --------------------------- > > but there must be sth. fundamentally wrong with it, because when I call > RequestRelease() I get an exception from WinRT about calling something at > an unexpected time. I'm calling it from SDL's main thread, which is > probably not the UI thread. > > I saw in your code for the game bar that you are using something called a > "dispatcher", I suppose this is to run sth. on the UI thread. Do I need to > do the same for DisplayRequest()? Anything else I have missed? > > > Regards, > > Daniel > > > ______________________________ _________________ > SDL mailing list > [email protected] > http://lists.libsdl.org/ listinfo.cgi/sdl-libsdl.org > <http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org> > > > _______________________________________________ > SDL mailing list > [email protected] > http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org > > > _______________________________________________ > SDL mailing list > [email protected] > http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org > > _______________________________________________ SDL mailing list [email protected] http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org