Merge branch 'master' of git://github.com/slavapestov/factor
commit
4addd3161b
|
@ -633,7 +633,7 @@ M: windows-ui-backend do-events
|
|||
0 >>cbClsExtra
|
||||
0 >>cbWndExtra
|
||||
f GetModuleHandle >>hInstance
|
||||
f GetModuleHandle "fraptor" utf16n string>alien LoadIcon >>hIcon
|
||||
f GetModuleHandle "APPICON" utf16n string>alien LoadIcon >>hIcon
|
||||
f IDC_ARROW LoadCursor >>hCursor
|
||||
|
||||
class-name-ptr >>lpszClassName
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright (C) 2010 Erik Charlebois.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: alien.c-types alien.libraries alien.syntax classes.struct
|
||||
kernel math windows.types windows.ole32 ;
|
||||
USING: alien alien.c-types alien.libraries alien.syntax
|
||||
classes.struct kernel math windows.types windows.ole32 ;
|
||||
IN: windows.ddk.hid
|
||||
|
||||
<< "hid" "hid.dll" stdcall add-library >>
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
! Copyright (C) 2010 Erik Charlebois.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: literals windows.kernel32 math alien.syntax windows.types classes.struct
|
||||
alien.c-types windows.errors windows.ole32 windows.advapi32 alien.libraries ;
|
||||
USING: literals windows.kernel32 math alien.syntax windows.types
|
||||
classes.struct alien alien.c-types windows.errors windows.ole32
|
||||
windows.advapi32 alien.libraries ;
|
||||
IN: windows.ddk.setupapi
|
||||
|
||||
<< "setupapi" "setupapi.dll" stdcall add-library >>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright (C) 2010 Erik Charlebois.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: alien.c-types alien.syntax classes.struct windows.kernel32
|
||||
windows.types alien.libraries ;
|
||||
USING: alien alien.c-types alien.syntax classes.struct
|
||||
windows.kernel32 windows.types alien.libraries ;
|
||||
IN: windows.ddk.winusb
|
||||
|
||||
<< "winusb" "winusb.dll" stdcall add-library >>
|
||||
|
|
|
@ -233,7 +233,7 @@ COM-INTERFACE: IDWriteFont IUnknown {acd16696-8c14-4f5d-877e-fe3fc1d32737}
|
|||
HRESULT HasCharacter ( UINT32 unicodeValue, BOOL* exists )
|
||||
HRESULT CreateFontFace ( IDWriteFontFace** fontFace ) ;
|
||||
|
||||
C-ENUM: DWRITE_READING_DRECTION
|
||||
C-ENUM: DWRITE_READING_DIRECTION
|
||||
DWRITE_READING_DIRECTION_LEFT_TO_RIGHT
|
||||
DWRITE_READING_DIRECTION_RIGHT_TO_LEFT ;
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
! (c)2009 Joe Groff bsd license
|
||||
USING: alien.c-types alien.data alien.libraries alien.syntax
|
||||
classes.struct kernel math system-info.windows windows.types ;
|
||||
USING: alien alien.c-types alien.data alien.libraries
|
||||
alien.syntax classes.struct kernel math system-info.windows
|
||||
windows.types ;
|
||||
IN: windows.dwmapi
|
||||
|
||||
STRUCT: MARGINS
|
||||
|
|
|
@ -38,8 +38,7 @@ const char *default_image_path()
|
|||
u64 nano_count()
|
||||
{
|
||||
struct timespec t;
|
||||
int ret;
|
||||
ret = clock_gettime(CLOCK_MONOTONIC,&t);
|
||||
int ret = clock_gettime(CLOCK_MONOTONIC,&t);
|
||||
if(ret != 0)
|
||||
fatal_error("clock_gettime failed", 0);
|
||||
return (u64)t.tv_sec * 1000000000 + t.tv_nsec;
|
||||
|
|
|
@ -87,12 +87,19 @@ Protocol *objc_getProtocol(char *name)
|
|||
|
||||
u64 nano_count()
|
||||
{
|
||||
u64 t = mach_absolute_time();
|
||||
mach_timebase_info_data_t info;
|
||||
kern_return_t ret = mach_timebase_info(&info);
|
||||
if(ret != 0)
|
||||
fatal_error("mach_timebase_info failed",ret);
|
||||
return t * (info.numer/info.denom);
|
||||
u64 time = mach_absolute_time();
|
||||
|
||||
static u64 scaling_factor = 0;
|
||||
if(!scaling_factor)
|
||||
{
|
||||
mach_timebase_info_data_t info;
|
||||
kern_return_t ret = mach_timebase_info(&info);
|
||||
if(ret != 0)
|
||||
fatal_error("mach_timebase_info failed",ret);
|
||||
scaling_factor = info.numer/info.denom;
|
||||
}
|
||||
|
||||
return time * scaling_factor;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -18,17 +18,24 @@ u64 system_micros()
|
|||
|
||||
u64 nano_count()
|
||||
{
|
||||
LARGE_INTEGER count;
|
||||
LARGE_INTEGER frequency;
|
||||
static double scale_factor;
|
||||
|
||||
static u32 hi = 0;
|
||||
static u32 lo = 0;
|
||||
BOOL ret;
|
||||
ret = QueryPerformanceCounter(&count);
|
||||
|
||||
LARGE_INTEGER count;
|
||||
BOOL ret = QueryPerformanceCounter(&count);
|
||||
if(ret == 0)
|
||||
fatal_error("QueryPerformanceCounter", 0);
|
||||
ret = QueryPerformanceFrequency(&frequency);
|
||||
if(ret == 0)
|
||||
fatal_error("QueryPerformanceFrequency", 0);
|
||||
|
||||
if(scale_factor == 0.0)
|
||||
{
|
||||
LARGE_INTEGER frequency;
|
||||
BOOL ret = QueryPerformanceFrequency(&frequency);
|
||||
if(ret == 0)
|
||||
fatal_error("QueryPerformanceFrequency", 0);
|
||||
scale_factor = (1000000000.0 / frequency.QuadPart);
|
||||
}
|
||||
|
||||
#ifdef FACTOR_64
|
||||
hi = count.HighPart;
|
||||
|
@ -40,7 +47,7 @@ u64 nano_count()
|
|||
#endif
|
||||
lo = count.LowPart;
|
||||
|
||||
return (u64)((((u64)hi << 32) | (u64)lo)*(1000000000.0/frequency.QuadPart));
|
||||
return (u64)((((u64)hi << 32) | (u64)lo) * scale_factor);
|
||||
}
|
||||
|
||||
void sleep_nanos(u64 nsec)
|
||||
|
|
Loading…
Reference in New Issue