Merge branch 'master' of git://github.com/slavapestov/factor

release
Erik Charlebois 2010-04-12 11:29:24 -07:00
commit 4addd3161b
9 changed files with 41 additions and 26 deletions

2
basis/ui/backend/windows/windows.factor Normal file → Executable file
View File

@ -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

4
basis/windows/ddk/hid/hid.factor Normal file → Executable file
View File

@ -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 >>

5
basis/windows/ddk/setupapi/setupapi.factor Normal file → Executable file
View File

@ -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 >>

4
basis/windows/ddk/winusb/winusb.factor Normal file → Executable file
View File

@ -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 >>

2
basis/windows/directx/dwrite/dwrite.factor Normal file → Executable file
View File

@ -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 ;

5
basis/windows/dwmapi/dwmapi.factor Normal file → Executable file
View File

@ -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

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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)