summaryrefslogtreecommitdiffstats
path: root/loader/drv.c
diff options
context:
space:
mode:
Diffstat (limited to 'loader/drv.c')
-rw-r--r--loader/drv.c176
1 files changed, 0 insertions, 176 deletions
diff --git a/loader/drv.c b/loader/drv.c
deleted file mode 100644
index fbc4007734..0000000000
--- a/loader/drv.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Modified for use with MPlayer, detailed changelog at
- * http://svn.mplayerhq.hu/mplayer/trunk/
- */
-
-#include "config.h"
-#include "debug.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef __FreeBSD__
-#include <sys/time.h>
-#endif
-
-#include "win32.h"
-#include "wine/driver.h"
-#include "wine/pe_image.h"
-#include "wine/winreg.h"
-#include "wine/vfw.h"
-#include "registry.h"
-#ifdef WIN32_LOADER
-#include "ldt_keeper.h"
-#endif
-#include "drv.h"
-#ifndef __MINGW32__
-#include "ext.h"
-#endif
-#include "path.h"
-
-#if 1
-
-/*
- * STORE_ALL/REST_ALL seems like an attempt to workaround problems due to
- * WINAPI/no-WINAPI bustage.
- *
- * There should be no need for the STORE_ALL/REST_ALL hack once all
- * function definitions agree with their prototypes (WINAPI-wise) and
- * we make sure, that we do not call these functions without a proper
- * prototype in scope.
- */
-
-#define STORE_ALL
-#define REST_ALL
-#else
-// this asm code is no longer needed
-#define STORE_ALL \
- __asm__ volatile ( \
- "push %%ebx\n\t" \
- "push %%ecx\n\t" \
- "push %%edx\n\t" \
- "push %%esi\n\t" \
- "push %%edi\n\t"::)
-
-#define REST_ALL \
- __asm__ volatile ( \
- "pop %%edi\n\t" \
- "pop %%esi\n\t" \
- "pop %%edx\n\t" \
- "pop %%ecx\n\t" \
- "pop %%ebx\n\t"::)
-#endif
-
-static DWORD dwDrvID = 0;
-
-LRESULT WINAPI SendDriverMessage(HDRVR hDriver, UINT message,
- LPARAM lParam1, LPARAM lParam2)
-{
- DRVR* module=(DRVR*)hDriver;
- int result;
-#ifndef __svr4__
- char qw[300];
-#endif
-#ifdef DETAILED_OUT
- printf("SendDriverMessage: driver %X, message %X, arg1 %X, arg2 %X\n", hDriver, message, lParam1, lParam2);
-#endif
- if (!module || !module->hDriverModule || !module->DriverProc) return -1;
-#ifndef __svr4__
- __asm__ volatile ("fsave (%0)\n\t": :"r"(&qw));
-#endif
-
-#ifdef WIN32_LOADER
- Setup_FS_Segment();
-#endif
-
- STORE_ALL;
- result=module->DriverProc(module->dwDriverID, hDriver, message, lParam1, lParam2);
- REST_ALL;
-
-#ifndef __svr4__
- __asm__ volatile ("frstor (%0)\n\t": :"r"(&qw));
-#endif
-
-#ifdef DETAILED_OUT
- printf("\t\tResult: %X\n", result);
-#endif
- return result;
-}
-
-void DrvClose(HDRVR hDriver)
-{
- if (hDriver)
- {
- DRVR* d = (DRVR*)hDriver;
- if (d->hDriverModule)
- {
-#ifdef WIN32_LOADER
- Setup_FS_Segment();
-#endif
- if (d->DriverProc)
- {
- SendDriverMessage(hDriver, DRV_CLOSE, 0, 0);
- d->dwDriverID = 0;
- SendDriverMessage(hDriver, DRV_FREE, 0, 0);
- }
- FreeLibrary(d->hDriverModule);
- }
- free(d);
- }
-#ifdef WIN32_LOADER
- CodecRelease();
-#endif
-}
-
-//DrvOpen(LPCSTR lpszDriverName, LPCSTR lpszSectionName, LPARAM lParam2)
-HDRVR DrvOpen(LPARAM lParam2)
-{
- NPDRVR hDriver;
- char unknown[0x124];
- const char* filename = (const char*) ((ICOPEN*) lParam2)->pV1Reserved;
-
-#ifdef WIN32_LOADER
- Setup_LDT_Keeper();
-#endif
- printf("Loading codec DLL: '%s'\n",filename);
-
- hDriver = malloc(sizeof(DRVR));
- if (!hDriver)
- return (HDRVR) 0;
- memset((void*)hDriver, 0, sizeof(DRVR));
-
-#ifdef WIN32_LOADER
- CodecAlloc();
- Setup_FS_Segment();
-#endif
-
- hDriver->hDriverModule = LoadLibraryA(filename);
- if (!hDriver->hDriverModule)
- {
- printf("Can't open library %s\n", filename);
- DrvClose((HDRVR)hDriver);
- return (HDRVR) 0;
- }
-
- hDriver->DriverProc = (DRIVERPROC) GetProcAddress(hDriver->hDriverModule,
- "DriverProc");
- if (!hDriver->DriverProc)
- {
- printf("Library %s is not a valid VfW/ACM codec\n", filename);
- DrvClose((HDRVR)hDriver);
- return (HDRVR) 0;
- }
-
- TRACE("DriverProc == %X\n", hDriver->DriverProc);
- SendDriverMessage((HDRVR)hDriver, DRV_LOAD, 0, 0);
- TRACE("DRV_LOAD Ok!\n");
- SendDriverMessage((HDRVR)hDriver, DRV_ENABLE, 0, 0);
- TRACE("DRV_ENABLE Ok!\n");
- hDriver->dwDriverID = ++dwDrvID; // generate new id
-
- // open driver and remmeber proper DriverID
- hDriver->dwDriverID = SendDriverMessage((HDRVR)hDriver, DRV_OPEN, (LPARAM) unknown, lParam2);
- TRACE("DRV_OPEN Ok!(%X)\n", hDriver->dwDriverID);
-
- printf("Loaded DLL driver %s at %x\n", filename, hDriver->hDriverModule);
- return (HDRVR)hDriver;
-}