2011-06-02, 23:08
Hi,
Currently I'm trying to use CGUIDialogKeyboard::ShowAndGetInput(), but when I call it, it locks XBMC up. It does this at the call to g_application.getApplicationMessenger().SendMessage(tMsg, true); at line 542. Looking in t method, I can see WaitForSingleObject(message.hWaitEvent, INFINITE); is being used and message.hWaitEvent is being set earlier. g_application.IsCurrentThread() is therefore false, which seems to be correct as my stacktrace says:
XBMC.exe!CGetDirectory::CGetJob:oWork() Line 65 C++
XBMC.exe!CJobWorker:rocess() Line 63 + 0xd bytes C++
XBMC.exe!CThread:taticThread(void * * data=0x0b105e90) Line 217 C++
XBMC.exe!_callthreadstartex() Line 314 + 0xf bytes C
XBMC.exe!_threadstartex(void * ptd=0x0b105f78) Line 297 C
AFAIK this starts a new thread. I'm not sure about whether I can call CGUIDialogKeyboard::ShowAndGetInput() after such a new thread has been created. It would help me a lot if someone could clarify the behaviour and point me in the right direction.
Thnx
Promontis
Currently I'm trying to use CGUIDialogKeyboard::ShowAndGetInput(), but when I call it, it locks XBMC up. It does this at the call to g_application.getApplicationMessenger().SendMessage(tMsg, true); at line 542. Looking in t method, I can see WaitForSingleObject(message.hWaitEvent, INFINITE); is being used and message.hWaitEvent is being set earlier. g_application.IsCurrentThread() is therefore false, which seems to be correct as my stacktrace says:
XBMC.exe!CGetDirectory::CGetJob:oWork() Line 65 C++
XBMC.exe!CJobWorker:rocess() Line 63 + 0xd bytes C++
XBMC.exe!CThread:taticThread(void * * data=0x0b105e90) Line 217 C++
XBMC.exe!_callthreadstartex() Line 314 + 0xf bytes C
XBMC.exe!_threadstartex(void * ptd=0x0b105f78) Line 297 C
AFAIK this starts a new thread. I'm not sure about whether I can call CGUIDialogKeyboard::ShowAndGetInput() after such a new thread has been created. It would help me a lot if someone could clarify the behaviour and point me in the right direction.
Thnx
Promontis