Re: WinRT keep display on

hardcoredaniel <[email protected]>
Newsgroups gmane.comp.lib.sdl
Message-ID <S6V.BD9t.1AajoKV0b}[email protected]>
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]
(mailto:[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](mailto:[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.