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
|
timer = timer-macosx.c
|
||||||
endif
|
endif
|
||||||
ifeq ($(TARGET_CYGWIN),yes)
|
ifeq ($(TARGET_CYGWIN),yes)
|
||||||
timer = timer-win.c
|
timer = timer-win2.c
|
||||||
endif
|
endif
|
||||||
ifeq ($(TARGET_MINGW32),yes)
|
ifeq ($(TARGET_MINGW32),yes)
|
||||||
timer = timer-win.c
|
timer = timer-win2.c
|
||||||
getch = getch2-win.c
|
getch = getch2-win.c
|
||||||
|
SRCS += glob-win.c
|
||||||
endif
|
endif
|
||||||
SRCS += $(timer)
|
SRCS += $(timer)
|
||||||
SRCS += $(getch)
|
SRCS += $(getch)
|
||||||
|
|
|
@ -99,7 +99,7 @@ int getch2(int time){
|
||||||
|
|
||||||
|
|
||||||
void getch2_enable(){
|
void getch2_enable(){
|
||||||
int retval;
|
DWORD retval;
|
||||||
stdin = GetStdHandle(STD_INPUT_HANDLE);
|
stdin = GetStdHandle(STD_INPUT_HANDLE);
|
||||||
if(!GetNumberOfConsoleInputEvents(stdin,&retval))
|
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