]> git.vomp.tv Git - vompclient-marten.git/commitdiff
A win bug fix
authorChris Tallon <chris@vomp.tv>
Sun, 10 Dec 2006 19:36:56 +0000 (19:36 +0000)
committerChris Tallon <chris@vomp.tv>
Sun, 10 Dec 2006 19:36:56 +0000 (19:36 +0000)
osdwin.cc
osdwin.h

index 7d89c79870e368ba0bea22ebb86ef3c013b24d65..58cf1efea99384d9d9d9b949a540861b5b6c8252 100644 (file)
--- a/osdwin.cc
+++ b/osdwin.cc
@@ -38,6 +38,7 @@ OsdWin::OsdWin()
   d3drtsurf=NULL;\r
   external_driving=false;\r
   dsallocator=NULL;\r
+  filter_type=D3DTEXF_NONE;\r
   lastrendertime=timeGetTime();\r
   event = CreateEvent(NULL,/*FALSE*/TRUE,FALSE,NULL);\r
   d3dmutex = CreateMutex(NULL,FALSE,NULL);\r
@@ -86,6 +87,18 @@ int OsdWin::init(void* device)
           Log::getInstance()->log("OSD", Log::WARN, "Could not create Direct3D9 vertex buf!");\r
                  return 0;\r
   }\r
+  /* We have to determine which kind of filtering is supported*/\r
+  D3DCAPS9 caps;\r
+  d3ddevice->GetDeviceCaps(&caps);\r
+  filter_type=D3DTEXF_NONE;\r
+  if ( ((caps.StretchRectFilterCaps & D3DPTFILTERCAPS_MINFPOINT)!=0)\r
+         && ((caps.StretchRectFilterCaps & D3DPTFILTERCAPS_MAGFPOINT)!=0)) {\r
+                 filter_type=D3DTEXF_POINT;\r
+   }\r
+   if ( ((caps.StretchRectFilterCaps & D3DPTFILTERCAPS_MINFLINEAR)!=0)\r
+         && ((caps.StretchRectFilterCaps & D3DPTFILTERCAPS_MAGFLINEAR)!=0)) {\r
+                 filter_type=D3DTEXF_LINEAR;\r
+   }\r
 \r
   //Now we will create the Screen\r
   screen = new SurfaceWin(Surface::SCREEN);\r
@@ -224,8 +237,7 @@ void OsdWin::InternalRendering(LPDIRECT3DSURFACE9 present){
                                        sourcerect.left=(surf_desc.Width-correction)/2;\r
                                        sourcerect.right=sourcerect.left+correction;\r
                        }\r
-\r
-                       d3ddevice->StretchRect(present,&sourcerect,d3drtsurf  ,&destrect,D3DTEXF_LINEAR);\r
+                       d3ddevice->StretchRect(present,&sourcerect,d3drtsurf  ,&destrect,filter_type);\r
                }\r
        } else {\r
                VideoWin* video =(VideoWin*) Video::getInstance();\r
index e52dc766699b23979d562b1a20a3cbdb727b307e..05505e36c3ac767cd01e1db2fb657ee2c3618cd7 100644 (file)
--- a/osdwin.h
+++ b/osdwin.h
@@ -77,6 +77,7 @@ private:
        int InitVertexBuffer();\r
        OSDVERTEX osdvertices[4];\r
        HANDLE event;\r
+       D3DTEXTUREFILTERTYPE filter_type;\r
 };\r
 \r
 #endif\r