Merge pull request #4594 from FernetMenta/paplayer
[xbmc.git] / xbmc / win32 / WindowHelper.cpp
blob1a39680d32fb7b734131d29c4cbe6c96c590d117
1 /*
2 * Copyright (C) 2005-2013 Team XBMC
3 * http://xbmc.org
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with XBMC; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
21 #include "WindowHelper.h"
22 #include "../Util.h"
24 extern HWND g_hWnd;
26 using namespace std;
28 CWHelper g_windowHelper;
30 CWHelper::CWHelper(void) : CThread("WindowHelper")
32 m_hwnd = NULL;
33 m_hProcess = NULL;
36 CWHelper::~CWHelper(void)
38 StopThread();
39 m_hwnd = NULL;
40 if(m_hProcess != NULL)
42 CloseHandle(m_hProcess);
43 m_hProcess = NULL;
47 void CWHelper::OnStartup()
49 if((m_hwnd == NULL) && (m_hProcess == NULL))
50 return;
52 // Minimize XBMC if not already
53 ShowWindow(g_hWnd,SW_MINIMIZE);
54 if(m_hwnd != NULL)
55 ShowWindow(m_hwnd,SW_RESTORE);
57 OutputDebugString("WindowHelper thread started\n");
60 void CWHelper::OnExit()
62 // Bring back XBMC window
63 ShowWindow(g_hWnd,SW_RESTORE);
64 SetForegroundWindow(g_hWnd);
65 m_hwnd = NULL;
66 if(m_hProcess != NULL)
68 CloseHandle(m_hProcess);
69 m_hProcess = NULL;
71 LockSetForegroundWindow(LSFW_LOCK);
72 OutputDebugString("WindowHelper thread ended\n");
75 void CWHelper::Process()
77 while (( !m_bStop ))
79 if(WaitForSingleObject(m_hProcess,500) != WAIT_TIMEOUT)
80 break;
81 /*if((m_hwnd != NULL) && (IsIconic(m_hwnd) == TRUE))
82 break;*/
86 void CWHelper::SetHWND(HWND hwnd)
88 m_hwnd = hwnd;
91 void CWHelper::SetHANDLE(HANDLE hProcess)
93 m_hProcess = hProcess;