mirror of https://github.com/mpv-player/mpv
alternative timer and glob emulation code for mingw32 port
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9984 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
472539ae25
commit
0015a97826
|
@ -17,11 +17,12 @@ ifeq ($(MACOSX),yes)
|
|||
timer = timer-macosx.c
|
||||
endif
|
||||
ifeq ($(TARGET_CYGWIN),yes)
|
||||
timer = timer-win.c
|
||||
timer = timer-win2.c
|
||||
endif
|
||||
ifeq ($(TARGET_MINGW32),yes)
|
||||
timer = timer-win.c
|
||||
timer = timer-win2.c
|
||||
getch = getch2-win.c
|
||||
SRCS += glob-win.c
|
||||
endif
|
||||
SRCS += $(timer)
|
||||
SRCS += $(getch)
|
||||
|
|
|
@ -99,7 +99,7 @@ int getch2(int time){
|
|||
|
||||
|
||||
void getch2_enable(){
|
||||
int retval;
|
||||
DWORD retval;
|
||||
stdin = GetStdHandle(STD_INPUT_HANDLE);
|
||||
if(!GetNumberOfConsoleInputEvents(stdin,&retval))
|
||||
{
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
#include <sys/types.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#ifndef HAVE_GLOB
|
||||
#ifdef __MINGW32__
|
||||
#undef DATADIR
|
||||
#include <windows.h>
|
||||
#include "glob.h"
|
||||
|
||||
int glob(const char *pattern, int flags,
|
||||
int (*errfunc)(const char *epath, int eerrno), glob_t *pglob)
|
||||
{
|
||||
HANDLE searchhndl;
|
||||
WIN32_FIND_DATA found_file;
|
||||
if(errfunc)printf("glob():ERROR:Sorry errfunc not supported by this implementation\n");
|
||||
if(flags)printf("glob():ERROR:Sorry no flags supported by this globimplementation\n");
|
||||
//printf("PATTERN \"%s\"\n",pattern);
|
||||
pglob->gl_pathc = 0;
|
||||
searchhndl = FindFirstFile( pattern,&found_file);
|
||||
if(searchhndl == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
if(GetLastError() == ERROR_FILE_NOT_FOUND)
|
||||
{
|
||||
pglob->gl_pathc = 0;
|
||||
//printf("could not find a file matching your search criteria\n");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
//printf("glob():ERROR:FindFirstFile: %i\n",GetLastError());
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
pglob->gl_pathv = malloc(sizeof(char*));
|
||||
pglob->gl_pathv[0] = strdup(found_file.cFileName);
|
||||
pglob->gl_pathc++;
|
||||
while(1)
|
||||
{
|
||||
if(!FindNextFile(searchhndl,&found_file))
|
||||
{
|
||||
if(GetLastError()==ERROR_NO_MORE_FILES)
|
||||
{
|
||||
//printf("glob(): no more files found\n");
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
//printf("glob():ERROR:FindNextFile:%i\n",GetLastError());
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//printf("glob: found file %s\n",found_file.cFileName);
|
||||
pglob->gl_pathc++;
|
||||
pglob->gl_pathv = realloc(pglob->gl_pathv,pglob->gl_pathc * sizeof(char*));
|
||||
pglob->gl_pathv[pglob->gl_pathc-1] = strdup(found_file.cFileName);
|
||||
}
|
||||
}
|
||||
FindClose(searchhndl);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void globfree(glob_t *pglob)
|
||||
{
|
||||
int i;
|
||||
for(i=0; i <pglob->gl_pathc ;i++)
|
||||
{
|
||||
free(pglob->gl_pathv[i]);
|
||||
}
|
||||
free(pglob->gl_pathv);
|
||||
}
|
||||
#endif /*__MINGW32__*/
|
||||
#endif /*HAVE_GLOB*/
|
||||
|
||||
#if 0
|
||||
int main(){
|
||||
glob_t gg;
|
||||
printf("globtest\n");
|
||||
glob( "*.jpeg",0,NULL,&gg );
|
||||
{
|
||||
int i;
|
||||
for(i=0;i<gg.gl_pathc;i++)printf("GLOBED:%i %s\n",i,gg.gl_pathv[i]);
|
||||
}
|
||||
globfree(&gg);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,16 @@
|
|||
#include "../config.h"
|
||||
|
||||
#ifndef HAVE_GLOB
|
||||
#ifdef __MINGW32__
|
||||
typedef struct {
|
||||
size_t gl_pathc;
|
||||
char **gl_pathv;
|
||||
size_t gl_offs;
|
||||
} glob_t;
|
||||
|
||||
void globfree(glob_t *pglob);
|
||||
|
||||
int glob(const char *pattern, int flags, int (*errfunc)(const char *epath, int eerrno), glob_t *pglob);
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -0,0 +1,34 @@
|
|||
// Precise timer routines for WINDOWS
|
||||
|
||||
#include <windows.h>
|
||||
#include <mmsystem.h>
|
||||
#include "timer.h"
|
||||
|
||||
// Returns current time in microseconds
|
||||
unsigned int GetTimer(){
|
||||
return timeGetTime() * 1000;
|
||||
}
|
||||
|
||||
// Returns current time in milliseconds
|
||||
unsigned int GetTimerMS(){
|
||||
return timeGetTime() ;
|
||||
}
|
||||
|
||||
int usec_sleep(int usec_delay){
|
||||
Sleep( usec_delay/1000);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static DWORD RelativeTime = 0;
|
||||
|
||||
float GetRelativeTime(){
|
||||
DWORD t, r;
|
||||
t = GetTimer();
|
||||
r = t - RelativeTime;
|
||||
RelativeTime = t;
|
||||
return (float) r *0.000001F;
|
||||
}
|
||||
|
||||
void InitTimer(){
|
||||
GetRelativeTime();
|
||||
}
|
Loading…
Reference in New Issue