[svn] / trunk / xvidcore / vfw / src / driverproc.c Repository:
ViewVC logotype

Diff of /trunk/xvidcore/vfw/src/driverproc.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1398, Fri Apr 2 21:29:21 2004 UTC revision 1495, Thu Jul 15 11:53:46 2004 UTC
# Line 19  Line 19 
19   *  along with this program ; if not, write to the Free Software   *  along with this program ; if not, write to the Free Software
20   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21   *   *
22   * $Id: driverproc.c,v 1.3 2004-04-02 21:29:21 edgomez Exp $   * $Id: driverproc.c,v 1.6 2004-07-15 11:53:46 suxen_drol Exp $
23   *   *
24   ****************************************************************************/   ****************************************************************************/
25    
# Line 33  Line 33 
33  #include "status.h"  #include "status.h"
34  #include "resource.h"  #include "resource.h"
35    
36    static int clean_dll_bindings(CODEC* codec);
37    
38  BOOL WINAPI DllMain(  BOOL WINAPI DllMain(
39          HANDLE hModule,          HANDLE hModule,
# Line 59  Line 60 
60    
61          case DRV_LOAD :          case DRV_LOAD :
62          case DRV_FREE :          case DRV_FREE :
63                  return DRV_OK;                  return DRVCNF_OK;
64    
65          case DRV_OPEN :          case DRV_OPEN :
66                  DPRINTF("DRV_OPEN");                  DPRINTF("DRV_OPEN");
# Line 69  Line 70 
70    
71                          if (icopen != NULL && icopen->fccType != ICTYPE_VIDEO)                          if (icopen != NULL && icopen->fccType != ICTYPE_VIDEO)
72                          {                          {
73                                  return DRV_CANCEL;                                  return DRVCNF_CANCEL;
74                          }                          }
75    
76                          codec = malloc(sizeof(CODEC));                          codec = malloc(sizeof(CODEC));
# Line 112  Line 113 
113                  /* compress_end/decompress_end don't always get called */                  /* compress_end/decompress_end don't always get called */
114                  compress_end(codec);                  compress_end(codec);
115                  decompress_end(codec);                  decompress_end(codec);
116                    clean_dll_bindings(codec);
117          status_destroy_always(&codec->status);          status_destroy_always(&codec->status);
118                  free(codec);                  free(codec);
119                  return DRV_OK;                  return DRVCNF_OK;
120    
121          case DRV_DISABLE :          case DRV_DISABLE :
122          case DRV_ENABLE :          case DRV_ENABLE :
123                  return DRV_OK;                  return DRVCNF_OK;
124    
125          case DRV_INSTALL :          case DRV_INSTALL :
126          case DRV_REMOVE :          case DRV_REMOVE :
127                  return DRV_OK;                  return DRVCNF_OK;
128    
129          case DRV_QUERYCONFIGURE :          case DRV_QUERYCONFIGURE :
130          case DRV_CONFIGURE :          case DRV_CONFIGURE :
131                  return DRV_CANCEL;                  return DRVCNF_CANCEL;
132    
133    
134          /* info */          /* info */
135    
136          case ICM_GETINFO :          case ICM_GETINFO :
137                  DPRINTF("ICM_GETINFO");                  DPRINTF("ICM_GETINFO");
138                  {  
139                    if (lParam1 && lParam2 >= sizeof(ICINFO)) {
140                          ICINFO *icinfo = (ICINFO *)lParam1;                          ICINFO *icinfo = (ICINFO *)lParam1;
141    
142                          icinfo->fccType = ICTYPE_VIDEO;                          icinfo->fccType = ICTYPE_VIDEO;
# Line 152  Line 155 
155                          return lParam2; /* size of struct */                          return lParam2; /* size of struct */
156                  }                  }
157    
158                    return 0;       /* error */
159    
160                  /* state control */                  /* state control */
161    
162          case ICM_ABOUT :          case ICM_ABOUT :
# Line 291  Line 296 
296          return ICERR_UNSUPPORTED;          return ICERR_UNSUPPORTED;
297    
298          default:          default:
299                    if (uMsg < DRV_USER)
300                  return DefDriverProc(dwDriverId, hDriver, uMsg, lParam1, lParam2);                  return DefDriverProc(dwDriverId, hDriver, uMsg, lParam1, lParam2);
301                    else
302                            return ICERR_UNSUPPORTED;
303          }          }
304  }  }
305    
   
306  void WINAPI Configure(HWND hwnd, HINSTANCE hinst, LPTSTR lpCmdLine, int nCmdShow)  void WINAPI Configure(HWND hwnd, HINSTANCE hinst, LPTSTR lpCmdLine, int nCmdShow)
307  {  {
308          DWORD dwDriverId;          DWORD dwDriverId;
# Line 307  Line 314 
314                  DriverProc(dwDriverId, 0, DRV_CLOSE, 0, 0);                  DriverProc(dwDriverId, 0, DRV_CLOSE, 0, 0);
315          }          }
316  }  }
317    
318    static int clean_dll_bindings(CODEC* codec)
319    {
320            if(codec->m_hdll)
321            {
322                    FreeLibrary(codec->m_hdll);
323                    codec->m_hdll = NULL;
324                    codec->xvid_global_func = NULL;
325                    codec->xvid_encore_func = NULL;
326                    codec->xvid_decore_func = NULL;
327                    codec->xvid_plugin_single_func = NULL;
328                    codec->xvid_plugin_2pass1_func = NULL;
329                    codec->xvid_plugin_2pass2_func = NULL;
330                    codec->xvid_plugin_lumimasking_func = NULL;
331                    codec->xvid_plugin_psnr_func = NULL;
332            }
333            return 0;
334    }

Legend:
Removed from v.1398  
changed lines
  Added in v.1495

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4