]> git.vomp.tv Git - vompclient-marten.git/commitdiff
Windows updates
authorChris Tallon <chris@vomp.tv>
Sun, 26 Nov 2006 13:20:23 +0000 (13:20 +0000)
committerChris Tallon <chris@vomp.tv>
Sun, 26 Nov 2006 13:20:23 +0000 (13:20 +0000)
videowin.h
winmain.cc

index 2b0050cf6afce1598607fb8feaca5f4f3b648eeb..7e8564424658996de6b1219fee045a1c778cc897 100644 (file)
@@ -31,7 +31,7 @@
 #include "defines.h"\r
 #include "video.h"\r
 \r
-#define DS_DEBUG\r
+//#define DS_DEBUG\r
 \r
 class DsSourceFilter;\r
 class DsAllocator;\r
@@ -58,18 +58,18 @@ class VideoWin : public Video
     int setPosition(int x, int y);\r
     int sync();\r
     int play();\r
-       int dsplay();\r
-       bool InIframemode() {return iframemode;};\r
+  int dsplay();\r
+  bool InIframemode() {return iframemode;};\r
     int stop();\r
-       int dsstop();\r
+  int dsstop();\r
     int pause();\r
-       int dspause();\r
+  int dspause();\r
     int unPause();\r
-       int dsunPause();\r
+  int dsunPause();\r
     int fastForward();\r
     int unFastForward();\r
     int reset();\r
-       int dsreset();\r
+  int dsreset();\r
     int blank();\r
     int signalOn();\r
     int signalOff();\r
@@ -97,11 +97,11 @@ class VideoWin : public Video
   virtual void ResetTimeOffsets();\r
 \r
     void SetAudioState(bool state){audioon=state;};\r
-       void SetAudioVolume(long volume);\r
+  void SetAudioVolume(long volume);\r
 \r
     void turnVideoOn(){videoon=true;};\r
     void turnVideoOff(){videoon=false;};\r
-       \r
+\r
     virtual void displayIFrame(const UCHAR* buffer, UINT length);\r
 \r
   unsigned int getPosx() {return videoposx;};\r
index 9fc88caf4cf388e44efd9c2ae38ee32a971b920d..0b4db46985cba3424abc8d2be051f228ba45a98f 100644 (file)
@@ -61,7 +61,16 @@ Audio* audio;
 bool wnd_fullscreen=false;\r
 RECT wnd_fs_rect={20,20,768+20,576+20};\r
 RECT wnd_fs_rect_client={0,0,768,576};\r
-OSVERSIONINFO windows_ver; //attempt to distigsh windows versions\r
+//OSVERSIONINFO windows_ver; //attempt to distigsh windows versions\r
+bool remotefnc=false;\r
+\r
+\r
+HMODULE user32dll;\r
+typedef UINT (*GETRAWINPUTDATAFNC) (HRAWINPUT,UINT,LPVOID,PUINT,UINT);\r
+typedef UINT (*REGISTERRAWINPUTDEVICEFNC) (PCRAWINPUTDEVICE,UINT,UINT);\r
+\r
+GETRAWINPUTDATAFNC dynGetRawInputData=NULL;\r
+REGISTERRAWINPUTDEVICEFNC dynRegisterRawInputDevices=NULL;\r
 \r
 \r
 void MILLISLEEP(ULONG a)
@@ -77,6 +86,19 @@ DWORD WINAPI commandthreadStart(void *arg)
         return 0;\r
 }\r
 \r
+void LoadRemoteFunctions() {\r
+       user32dll=LoadLibrary("user32.dll");\r
+       if (user32dll!=NULL) {\r
+               dynGetRawInputData=(GETRAWINPUTDATAFNC)GetProcAddress(user32dll,"GetRawInputData");\r
+               if (dynGetRawInputData!=NULL) {\r
+                       dynRegisterRawInputDevices=(REGISTERRAWINPUTDEVICEFNC)GetProcAddress(user32dll,"RegisterRawInputDevices");\r
+                       if (dynRegisterRawInputDevices!=NULL) {\r
+                               remotefnc=true;\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
 bool InitApp(HINSTANCE hinst,int cmdshow);\r
 \r
 HWND win_main;//global window handle\r
@@ -87,6 +109,7 @@ HACCEL acc;
 INT WINAPI WinMain( HINSTANCE hinst , HINSTANCE previnst, LPSTR cmdline, int cmdshow)\r
 {\r
   //On Windows we have to init a window, we use DXUT\r
+       LoadRemoteFunctions();\r
        if (!InitApp(hinst,cmdshow)) return false;\r
   //Starting Network support\r
   WSADATA wsadat; \r
@@ -95,6 +118,7 @@ INT WINAPI WinMain( HINSTANCE hinst , HINSTANCE previnst, LPSTR cmdline, int cmd
         ERROR_MSG("Initialising WinSocked: Error at WSAStartup()\n");\r
                return 0;\r
   }\r
+  \r
   result= CoInitializeEx(NULL,COINIT_MULTITHREADED );//Initialize COM for DirectShow\r
   if (result!=S_OK) {\r
          ERROR_MSG("Initialising COM: Error at Coinitialize()\n");\r
@@ -311,6 +335,7 @@ INT WINAPI WinMain( HINSTANCE hinst , HINSTANCE previnst, LPSTR cmdline, int cmd
   WaitForSingleObject(commandthread,INFINITE);\r
   shutdown(0);\r
   WSACleanup();\r
+  if (user32dll) FreeModule(user32dll);\r
   return 0;\r
 \r
 }\r
@@ -489,14 +514,13 @@ LONG FAR PASCAL WindowProc(HWND wind, UINT msg, WPARAM wparam, LPARAM lparam)
 \r
                break;\r
        case WM_INPUT:\r
-               if ((windows_ver.dwMajorVersion>5 || \r
-                       (windows_ver.dwMajorVersion==5 && windows_ver.dwMinorVersion>=1)) ) {\r
+               if (remotefnc ) {\r
                        //only on XP!\r
                         LPRAWINPUT lpit;\r
                         UINT risize;\r
-                        GetRawInputData((HRAWINPUT)lparam,RID_INPUT,NULL,&risize,sizeof(RAWINPUTHEADER));\r
+                        dynGetRawInputData((HRAWINPUT)lparam,RID_INPUT,NULL,&risize,sizeof(RAWINPUTHEADER));\r
                         lpit=(LPRAWINPUT)malloc(risize);\r
-                        GetRawInputData((HRAWINPUT)lparam,RID_INPUT,lpit,&risize,sizeof(RAWINPUTHEADER));\r
+                        dynGetRawInputData((HRAWINPUT)lparam,RID_INPUT,lpit,&risize,sizeof(RAWINPUTHEADER));\r
   \r
                        if (lpit->header.dwType==RIM_TYPEHID && lpit->data.hid.dwSizeHid>=2) {\r
                                DWORD button=lpit->data.hid.bRawData[1] | (lpit->data.hid.bRawData[0]<< 8);\r
@@ -548,8 +572,6 @@ LONG FAR PASCAL WindowProc(HWND wind, UINT msg, WPARAM wparam, LPARAM lparam)
 \r
 bool InitApp(HINSTANCE hinst,int cmdshow) {\r
        /* main window */\r
-       windows_ver.dwOSVersionInfoSize=sizeof(windows_ver);\r
-       GetVersionEx(&windows_ver);\r
        WNDCLASS wcs;\r
        DWORD flags;\r
        wcs.style = CS_HREDRAW | CS_VREDRAW;\r
@@ -596,8 +618,7 @@ bool InitApp(HINSTANCE hinst,int cmdshow) {
                return FALSE;\r
        ShowWindow(win,SW_SHOWNORMAL);\r
        UpdateWindow(win);\r
-       if (windows_ver.dwMajorVersion>5 || \r
-               ( windows_ver.dwMajorVersion==5 && windows_ver.dwMinorVersion>=1)) {//at least windows XP\r
+       if (remotefnc) {//at least windows XP\r
                /* We want to support MCE Remote controls*/\r
                RAWINPUTDEVICE remote_control_data[4];\r
                ZeroMemory(remote_control_data,sizeof(remote_control_data));\r
@@ -613,7 +634,7 @@ bool InitApp(HINSTANCE hinst,int cmdshow) {
                remote_control_data[3].usUsagePage=0x01; \r
                remote_control_data[3].usUsage=0x80; \r
                remote_control_data[3].dwFlags=0;\r
-               if (RegisterRawInputDevices(remote_control_data,4,sizeof(remote_control_data[0]))!=TRUE) {\r
+               if (dynRegisterRawInputDevices(remote_control_data,4,sizeof(remote_control_data[0]))!=TRUE) {\r
                        MessageBox(0,"Registering remote control failed!","Aborting!",0);\r
                        return FALSE;\r
                }\r