mirror of
https://github.com/VincentWei/MiniGUI.git
synced 2026-02-06 02:01:50 +08:00
__mg_time -> mg_os_time; __mg_mktime -> __mg_os_mktime; __mg_localtime -> __mg_os_localtime; use clock_gettime for tick count instead of gettimeofday
This commit is contained in:
@@ -4984,11 +4984,11 @@ provide the function whether the file exist or not.(xwyan)
|
||||
* src/server/request.c
|
||||
|
||||
10/24. MODIFICATION: Use 1980/01/01 00:00:00 to return the default local time
|
||||
for __mg_localtime.
|
||||
for __mg_os_localtime.
|
||||
* src/misc/nposix.c
|
||||
|
||||
10/24. MODIFICATION: Use HAVE_TIME, HAVE_MKTIME, and HAVE_LOCALTIME to define
|
||||
__mg_time, __mg_mktime, and __mg_localtime functions.
|
||||
__mg_os_time, __mg_os_mktime, and __mg_os_localtime functions.
|
||||
* configure.in
|
||||
* src/misc/nposix.c
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ AC_FUNC_ALLOCA
|
||||
AC_FUNC_MEMCMP
|
||||
AC_FUNC_MMAP
|
||||
AC_FUNC_VPRINTF
|
||||
AC_CHECK_FUNCS(time mktime localtime strdup strcasecmp strncasecmp strerror setlocale)
|
||||
AC_CHECK_FUNCS(time mktime localtime clock_gettime strdup strcasecmp strncasecmp strerror setlocale)
|
||||
AC_CHECK_FUNCS(posix_memalign memalign valloc)
|
||||
|
||||
dnl ========================================================================
|
||||
|
||||
@@ -1991,7 +1991,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_TIME
|
||||
typedef unsigned int time_t;
|
||||
typedef unsigned long time_t;
|
||||
|
||||
struct tm {
|
||||
int tm_sec; /* seconds [0,61] */
|
||||
|
||||
116
include/window.h
116
include/window.h
@@ -2041,7 +2041,7 @@ extern DWORD __mg_interval_time;
|
||||
* should be erase. The rectangle is in client coordinates system.
|
||||
* If it is NULL, the whole client area should be erased.
|
||||
*/
|
||||
#define MSG_ERASEBKGND 0x00B0 /* this is an async message */
|
||||
#define MSG_ERASEBKGND 0x00B0 /* this is an async message */
|
||||
|
||||
/**
|
||||
* \def MSG_PAINT
|
||||
@@ -2087,7 +2087,7 @@ extern DWORD __mg_interval_time;
|
||||
*/
|
||||
#define MSG_SYNCPAINT 0x00B4
|
||||
|
||||
#define MSG_LASTPAINTMSG 0x00CF
|
||||
#define MSG_LASTPAINTMSG 0x00BF
|
||||
|
||||
/** @} end of paint_msgs */
|
||||
|
||||
@@ -2096,18 +2096,18 @@ extern DWORD __mg_interval_time;
|
||||
* @{
|
||||
*/
|
||||
|
||||
/* Group 6 from 0x00D0 to 0x00EF, the internal desktop messages. */
|
||||
#define MSG_FIRSTSESSIONMSG 0x00D0
|
||||
/* Group 6 from 0x00C0 to 0x00EF, the internal desktop messages. */
|
||||
#define MSG_FIRSTSESSIONMSG 0x00C0
|
||||
|
||||
#define MSG_STARTSESSION 0x00D0
|
||||
#define MSG_QUERYENDSESSION 0x00D1
|
||||
#define MSG_ENDSESSION 0x00D2
|
||||
#define MSG_REINITSESSION 0x00D3
|
||||
#define MSG_STARTSESSION 0x00C0
|
||||
#define MSG_QUERYENDSESSION 0x00C1
|
||||
#define MSG_ENDSESSION 0x00C2
|
||||
#define MSG_REINITSESSION 0x00C3
|
||||
|
||||
#define MSG_ERASEDESKTOP 0x00DE
|
||||
#define MSG_PAINTDESKTOP 0x00DF
|
||||
#define MSG_ERASEDESKTOP 0x00CE
|
||||
#define MSG_PAINTDESKTOP 0x00CF
|
||||
|
||||
#define MSG_DT_MOUSEOFF 0x00E0
|
||||
#define MSG_DT_MOUSEOFF 0x00D0
|
||||
|
||||
/**
|
||||
* \def MSG_DT_LBUTTONDOWN
|
||||
@@ -2126,7 +2126,7 @@ extern DWORD __mg_interval_time;
|
||||
*
|
||||
* \sa MSG_DT_LBUTTONUP, MSG_LBUTTONDOWN
|
||||
*/
|
||||
#define MSG_DT_LBUTTONDOWN 0x00E1
|
||||
#define MSG_DT_LBUTTONDOWN 0x00D1
|
||||
|
||||
/**
|
||||
* \def MSG_DT_LBUTTONUP
|
||||
@@ -2145,7 +2145,7 @@ extern DWORD __mg_interval_time;
|
||||
*
|
||||
* \sa MSG_DT_LBUTTONDOWN, MSG_LBUTTONUP
|
||||
*/
|
||||
#define MSG_DT_LBUTTONUP 0x00E2
|
||||
#define MSG_DT_LBUTTONUP 0x00D2
|
||||
|
||||
/**
|
||||
* \def MSG_DT_LBUTTONDBLCLK
|
||||
@@ -2164,7 +2164,7 @@ extern DWORD __mg_interval_time;
|
||||
*
|
||||
* \sa MSG_RBUTTONDBLCLK
|
||||
*/
|
||||
#define MSG_DT_LBUTTONDBLCLK 0x00E3
|
||||
#define MSG_DT_LBUTTONDBLCLK 0x00D3
|
||||
|
||||
/**
|
||||
* \def MSG_DT_MOUSEMOVE
|
||||
@@ -2183,7 +2183,7 @@ extern DWORD __mg_interval_time;
|
||||
*
|
||||
* \sa MSG_MOUSEMOVE
|
||||
*/
|
||||
#define MSG_DT_MOUSEMOVE 0x00E4
|
||||
#define MSG_DT_MOUSEMOVE 0x00D4
|
||||
|
||||
/**
|
||||
* \def MSG_DT_RBUTTONDOWN
|
||||
@@ -2203,7 +2203,7 @@ extern DWORD __mg_interval_time;
|
||||
* \sa MSG_DT_RBUTTONUP, MSG_RBUTTONDOWN
|
||||
*
|
||||
*/
|
||||
#define MSG_DT_RBUTTONDOWN 0x00E5
|
||||
#define MSG_DT_RBUTTONDOWN 0x00D5
|
||||
|
||||
/**
|
||||
* \def MSG_DT_RBUTTONUP
|
||||
@@ -2222,7 +2222,7 @@ extern DWORD __mg_interval_time;
|
||||
*
|
||||
* \sa MSG_DT_RBUTTONDOWN, MSG_RBUTTONUP
|
||||
*/
|
||||
#define MSG_DT_RBUTTONUP 0x00E6
|
||||
#define MSG_DT_RBUTTONUP 0x00D6
|
||||
|
||||
/**
|
||||
* \def MSG_DT_RBUTTONDBLCLK
|
||||
@@ -2241,9 +2241,67 @@ extern DWORD __mg_interval_time;
|
||||
*
|
||||
* \sa MSG_LBUTTONDBLCLK
|
||||
*/
|
||||
#define MSG_DT_RBUTTONDBLCLK 0x00E7
|
||||
#define MSG_DT_RBUTTONDBLCLK 0x00D7
|
||||
|
||||
#define MSG_DT_KEYOFF 0x00D8
|
||||
/**
|
||||
* \def MSG_DT_MBUTTONDOWN
|
||||
* \brief Right mouse button down message on the desktop.
|
||||
*
|
||||
* This message is posted to the desktop window when the user presses down
|
||||
* the right button of the mouse in the area of the desktop window.
|
||||
*
|
||||
* \code
|
||||
* MSG_DT_MBUTTONDOWN
|
||||
* int x_pos = LOSWORD (lParam);
|
||||
* int y_pos = HISWORD (lParam);
|
||||
* \endcode
|
||||
*
|
||||
* \param x_pos,y_pos The position of the mouse in desktop coordinates.
|
||||
*
|
||||
* \sa MSG_DT_MBUTTONUP, MSG_RBUTTONDOWN
|
||||
*
|
||||
*/
|
||||
#define MSG_DT_MBUTTONDOWN 0x00D8
|
||||
|
||||
/**
|
||||
* \def MSG_DT_MBUTTONUP
|
||||
* \brief Right mouse button up message on the desktop.
|
||||
*
|
||||
* This message is posted to the desktop window when the user releases up
|
||||
* the right button of the mouse in the area of the desktop window.
|
||||
*
|
||||
* \code
|
||||
* MSG_DT_MBUTTONUP
|
||||
* int x_pos = LOSWORD (lParam);
|
||||
* int y_pos = HISWORD (lParam);
|
||||
* \endcode
|
||||
*
|
||||
* \param x_pos,y_pos The position of the mouse in desktop coordinates.
|
||||
*
|
||||
* \sa MSG_DT_MBUTTONDOWN, MSG_RBUTTONUP
|
||||
*/
|
||||
#define MSG_DT_MBUTTONUP 0x00D9
|
||||
|
||||
/**
|
||||
* \def MSG_DT_MBUTTONDBLCLK
|
||||
* \brief Right mouse button double clicked message on the desktop.
|
||||
*
|
||||
* This message is posted to the desktop window when the user double clicks
|
||||
* the right button of the mouse in the area of the desktop window.
|
||||
*
|
||||
* \code
|
||||
* MSG_DT_MBUTTONDBLCLK
|
||||
* int x_pos = LOSWORD (lParam);
|
||||
* int y_pos = HISWORD (lParam);
|
||||
* \endcode
|
||||
*
|
||||
* \param x_pos,y_pos The position of the mouse in desktop coordinates.
|
||||
*
|
||||
* \sa MSG_LBUTTONDBLCLK
|
||||
*/
|
||||
#define MSG_DT_MBUTTONDBLCLK 0x00DA
|
||||
|
||||
#define MSG_DT_KEYOFF 0x00CB
|
||||
|
||||
/**
|
||||
* \def MSG_DT_KEYDOWN
|
||||
@@ -2262,7 +2320,9 @@ extern DWORD __mg_interval_time;
|
||||
* \sa MSG_DT_KEYUP
|
||||
*
|
||||
*/
|
||||
#define MSG_DT_KEYDOWN 0x00E8
|
||||
#define MSG_DT_KEYDOWN 0x00E0
|
||||
|
||||
#define MSG_DT_CHAR 0x00E1
|
||||
|
||||
/**
|
||||
* \def MSG_DT_KEYUP
|
||||
@@ -2280,18 +2340,16 @@ extern DWORD __mg_interval_time;
|
||||
*
|
||||
* \sa MSG_DT_KEYDOWN
|
||||
*/
|
||||
#define MSG_DT_KEYUP 0x00EA
|
||||
#define MSG_DT_KEYUP 0x00E2
|
||||
|
||||
#define MSG_DT_SYSKEYDOWN 0x00EB
|
||||
#define MSG_DT_SYSKEYUP 0x00ED
|
||||
#define MSG_DT_SYSKEYDOWN 0x00E3
|
||||
#define MSG_DT_SYSCHAR 0x00E4
|
||||
#define MSG_DT_SYSKEYUP 0x00E5
|
||||
|
||||
#define MSG_DT_SYSCHAR 0x00EC
|
||||
#define MSG_DT_CHAR 0x00E9
|
||||
#define MSG_DT_KEYLONGPRESS 0x00E6
|
||||
#define MSG_DT_KEYALWAYSPRESS 0x00E7
|
||||
|
||||
#define MSG_DT_KEYLONGPRESS 0x00EE
|
||||
#define MSG_DT_KEYALWAYSPRESS 0x00EF
|
||||
|
||||
#define MSG_LASTSESSIONMSG 0x00EF
|
||||
#define MSG_LASTSESSIONMSG 0x00EF
|
||||
|
||||
/** @} end of desktop_msgs */
|
||||
|
||||
|
||||
@@ -234,7 +234,7 @@ static int GetWeekDay (int year, int month, int day)
|
||||
nowday.tm_mon = month-1;
|
||||
nowday.tm_year = year-1900;
|
||||
|
||||
if (__mg_mktime(&nowday) == -1) {
|
||||
if (__mg_os_mktime(&nowday) == -1) {
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
@@ -746,8 +746,8 @@ static BOOL mcInitMonthCalendarData (HWND hWnd, MONCALDDATA* mc_data)
|
||||
RECT rcClient, rcMDay;
|
||||
PMCCOLORINFO pmcci;
|
||||
|
||||
__mg_time(&nowtime);
|
||||
pnt = (struct tm *)__mg_localtime(&nowtime);
|
||||
__mg_os_time(&nowtime);
|
||||
pnt = (struct tm *)__mg_os_localtime(&nowtime);
|
||||
mc_data->sys_year = mc_data->cur_year = pnt->tm_year + 1900;
|
||||
mc_data->sys_month = mc_data->cur_month = pnt->tm_mon + 1;
|
||||
mc_data->sys_day = mc_data->cur_day = pnt->tm_mday;
|
||||
|
||||
@@ -102,9 +102,9 @@ typedef MONCALDDATA* PMONCALDDATA;
|
||||
|
||||
BOOL RegisterMonthCalendarControl (void);
|
||||
|
||||
time_t __mg_time (time_t * timer);
|
||||
time_t __mg_mktime (struct tm * timeptr);
|
||||
struct tm *__mg_localtime (const time_t * timer);
|
||||
time_t __mg_os_time (time_t * timer);
|
||||
time_t __mg_os_mktime (struct tm * timeptr);
|
||||
struct tm *__mg_os_localtime (const time_t * timer);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -1059,7 +1059,7 @@ static BOOL init_or_term_specifical_fonts (char* etc_section, BOOL is_unload)
|
||||
* first to load from sytem res path, else load it directly(relative or absolute path).*/
|
||||
if ((add_dev_font (font_name, font_file, TRUE)) == TRUE)
|
||||
added_num++;
|
||||
else if ((0 == mg_path_joint(font_path, MAX_PATH + 1,
|
||||
else if ((0 == __mg_path_joint(font_path, MAX_PATH + 1,
|
||||
sysres_get_system_res_path(), font_file))
|
||||
&& ((add_dev_font (font_name, font_path, TRUE)) == TRUE))
|
||||
added_num++;
|
||||
|
||||
@@ -617,8 +617,7 @@ SetDesktopTimerFlag (void)
|
||||
static inline void
|
||||
AlertDesktopTimerEvent (void)
|
||||
{
|
||||
if(__mg_dsk_msg_queue)
|
||||
{
|
||||
if (__mg_dsk_msg_queue) {
|
||||
__mg_dsk_msg_queue->TimerMask = 1;
|
||||
POST_MSGQ(__mg_dsk_msg_queue);
|
||||
}
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
/*
|
||||
* This file is part of MiniGUI, a mature cross-platform windowing
|
||||
* This file is part of MiniGUI, a mature cross-platform windowing
|
||||
* and Graphics User Interface (GUI) support system for embedded systems
|
||||
* and smart IoT devices.
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2002~2018, Beijing FMSoft Technologies Co., Ltd.
|
||||
* Copyright (C) 1998~2002, WEI Yongming
|
||||
*
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* Or,
|
||||
*
|
||||
*
|
||||
* As this program is a library, any link to this program must follow
|
||||
* GNU General Public License version 3 (GPLv3). If you cannot accept
|
||||
* GPLv3, you need to be licensed from FMSoft.
|
||||
*
|
||||
*
|
||||
* If you have got a commercial license of this program, please use it
|
||||
* under the terms and conditions of the commercial license.
|
||||
*
|
||||
*
|
||||
* For more information about the commercial license, please refer to
|
||||
* <http://www.minigui.com/en/about/licensing-policy/>.
|
||||
*/
|
||||
@@ -65,6 +65,11 @@ struct timezone {
|
||||
|
||||
unsigned int __mg_os_get_random_seed (void);
|
||||
void __mg_os_time_delay (int ms);
|
||||
void __mg_os_start_time_ms(void);
|
||||
DWORD __mg_os_get_time_ms(void);
|
||||
time_t __mg_os_time (time_t* timep);
|
||||
time_t __mg_os_mktime (struct tm *tmp);
|
||||
struct tm *__mg_os_localtime (const time_t * timep);
|
||||
|
||||
#define NR_KEYS_INIT_ALLOC 8
|
||||
#define NR_KEYS_INC_ALLOC 4
|
||||
@@ -90,8 +95,10 @@ int __mg_lookfor_unused_slot (unsigned char* bitmap, int len_bmp, int set);
|
||||
void __mg_slot_set_use (unsigned char* bitmap, int index);
|
||||
int __mg_slot_clear_use (unsigned char* bitmap, int index);
|
||||
|
||||
BOOL mg_is_abs_path(const char* path);
|
||||
int mg_path_joint(char* dst, int dst_size, const char* abs_path, const char* sub_path);
|
||||
BOOL __mg_is_abs_path(const char* path);
|
||||
int __mg_path_joint(char* dst, int dst_size, const char* abs_path,
|
||||
const char* sub_path);
|
||||
|
||||
#if defined (__VXWORKS__) || defined(WIN32) || defined (__NUCLEUS_MNT__) || defined (_EM86_IAL) || defined (_EM85_IAL)
|
||||
double cbrt(double x);
|
||||
#endif
|
||||
|
||||
@@ -234,7 +234,7 @@ char * __mg_msgstr2 [] =
|
||||
"", // 0x00AE
|
||||
"", // 0x00AF
|
||||
|
||||
"MSG_ERASEBKGND", // 0x00B0 // this is an async message.
|
||||
"MSG_ERASEBKGND", // 0x00B0
|
||||
"MSG_PAINT", // 0x00B1
|
||||
"MSG_NCPAINT", // 0x00B2
|
||||
"MSG_NCACTIVATE", // 0x00B3
|
||||
@@ -250,10 +250,11 @@ char * __mg_msgstr2 [] =
|
||||
"", // 0x00BD
|
||||
"", // 0x00BE
|
||||
"", // 0x00BF
|
||||
"", // 0x00C0
|
||||
"", // 0x00C1
|
||||
"", // 0x00C2
|
||||
"", // 0x00C3
|
||||
|
||||
"MSG_STARTSESSION", // 0x00C0
|
||||
"MSG_QUERYENDSESSION", // 0x00C1
|
||||
"MSG_ENDSESSION", // 0x00C2
|
||||
"MSG_REINITSESSION", // 0x00C3
|
||||
"", // 0x00C4
|
||||
"", // 0x00C5
|
||||
"", // 0x00C6
|
||||
@@ -264,42 +265,42 @@ char * __mg_msgstr2 [] =
|
||||
"", // 0x00CB
|
||||
"", // 0x00CC
|
||||
"", // 0x00CD
|
||||
"", // 0x00CE
|
||||
"", // 0x00CF
|
||||
"MSG_ERASEDESKTOP", // 0x00CE
|
||||
"MSG_PAINTDESKTOP", // 0x00CF
|
||||
|
||||
"MSG_STARTSESSION", // 0x00D0
|
||||
"MSG_QUERYENDSESSION", // 0x00D1
|
||||
"MSG_ENDSESSION", // 0x00D2
|
||||
"MSG_REINITSESSION", // 0x00D3
|
||||
"", // 0x00D4
|
||||
"", // 0x00D5
|
||||
"", // 0x00D6
|
||||
"", // 0x00D7
|
||||
"", // 0x00D8
|
||||
"", // 0x00D9
|
||||
"", // 0x00DA
|
||||
"", // 0x00D0
|
||||
"MSG_DT_LBUTTONDOWN", // 0x00D1
|
||||
"MSG_DT_LBUTTONUP", // 0x00D2
|
||||
"MSG_DT_LBUTTONDBLCLK", // 0x00D3
|
||||
"MSG_DT_MOUSEMOVE", // 0x00D4
|
||||
"MSG_DT_RBUTTONDOWN", // 0x00D5
|
||||
"MSG_DT_RBUTTONUP", // 0x00D6
|
||||
"MSG_DT_RBUTTONDBLCLK", // 0x00D7
|
||||
"MSG_DT_MBUTTONDOWN", // 0x00D8
|
||||
"MSG_DT_MBUTTONUP", // 0x00D9
|
||||
"MSG_DT_MBUTTONDBLCLK", // 0x00DA
|
||||
"", // 0x00DB
|
||||
"", // 0x00DC
|
||||
"", // 0x00DD
|
||||
"MSG_ERASEDESKTOP", // 0x00DE
|
||||
"MSG_PAINTDESKTOP", // 0x00DF
|
||||
"", // 0x00DE
|
||||
"", // 0x00DF
|
||||
|
||||
"MSG_DT_LBUTTONDOWN", // 0x00E0
|
||||
"MSG_DT_LBUTTONUP", // 0x00E1
|
||||
"MSG_DT_LBUTTONDBLCLK", // 0x00E2
|
||||
"MSG_DT_MOUSEMOVE", // 0x00E3
|
||||
"MSG_DT_RBUTTONDOWN", // 0x00E4
|
||||
"MSG_DT_RBUTTONUP", // 0x00E5
|
||||
"MSG_DT_RBUTTONDBLCLK", // 0x00E6
|
||||
"", // 0x00E7
|
||||
"MSG_DT_KEYDOWN", // 0x00E8
|
||||
"MSG_DT_CHAR", // 0x00E9
|
||||
"MSG_DT_KEYUP", // 0x00EA
|
||||
"MSG_DT_SYSKEYDOWN", // 0x00EB
|
||||
"MSG_DT_SYSCHAR", // 0x00EC
|
||||
"MSG_DT_SYSKEYUP", // 0x00ED
|
||||
"MSG_DT_KEYLONGPRESS", // 0x00EE
|
||||
"MSG_DT_KEYALWAYSPRESS", // 0x00EF
|
||||
"MSG_DT_KEYDOWN", // 0x00E0
|
||||
"MSG_DT_CHAR", // 0x00E1
|
||||
"MSG_DT_KEYUP", // 0x00E2
|
||||
"MSG_DT_SYSKEYDOWN", // 0x00E3
|
||||
"MSG_DT_SYSCHAR", // 0x00E4
|
||||
"MSG_DT_SYSKEYUP", // 0x00E5
|
||||
"MSG_DT_KEYLONGPRESS", // 0x00E6
|
||||
"MSG_DT_KEYALWAYSPRESS", // 0x00E7
|
||||
"", // 0x00E8
|
||||
"", // 0x00E9
|
||||
"", // 0x00EA
|
||||
"", // 0x00EB
|
||||
"", // 0x00EC
|
||||
"", // 0x00ED
|
||||
"", // 0x00EE
|
||||
"", // 0x00EF
|
||||
|
||||
"MSG_ADDNEWMAINWIN", // 0x00F0
|
||||
"MSG_REMOVEMAINWIN", // 0x00F1
|
||||
|
||||
@@ -104,8 +104,8 @@ void mg_TerminateDesktop (void)
|
||||
DestroyFreeClipRectList (&sg_FreeInvRectList);
|
||||
|
||||
mg_TerminateSystemRes ();
|
||||
//dongjunjie avoid double free
|
||||
__mg_dsk_win = 0;
|
||||
//dongjunjie avoid double free
|
||||
__mg_dsk_win = 0;
|
||||
}
|
||||
|
||||
static PMAINWIN dskGetActiveWindow (void)
|
||||
@@ -532,7 +532,7 @@ static int dskScrollMainWindow (PMAINWIN pWin, PSCROLLWINDOWINFO pswi)
|
||||
|
||||
if (pWin->dwExStyle & WS_EX_TRANSPARENT) {
|
||||
/* set invalidate rect. */
|
||||
InvalidateRect ((HWND)pWin, &rcMove, TRUE);
|
||||
InvalidateRect ((HWND)pWin, &rcMove, TRUE);
|
||||
inved = TRUE;
|
||||
}
|
||||
else {
|
||||
@@ -619,7 +619,7 @@ static int dskScrollMainWindow (PMAINWIN pWin, PSCROLLWINDOWINFO pswi)
|
||||
*/
|
||||
if(bNeedInvalidate)
|
||||
{
|
||||
InvalidateRect ((HWND)pWin, &rcInvalid, TRUE);
|
||||
InvalidateRect ((HWND)pWin, &rcInvalid, TRUE);
|
||||
rcInvalid = rcMove; //restore the invalidate area
|
||||
bNeedInvalidate = FALSE; //resotre the inved value
|
||||
inved = TRUE;
|
||||
@@ -636,7 +636,7 @@ static int dskScrollMainWindow (PMAINWIN pWin, PSCROLLWINDOWINFO pswi)
|
||||
|
||||
if (bNeedInvalidate)
|
||||
{
|
||||
InvalidateRect ((HWND)pWin, &rcInvalid, TRUE);
|
||||
InvalidateRect ((HWND)pWin, &rcInvalid, TRUE);
|
||||
inved = TRUE;
|
||||
}
|
||||
|
||||
@@ -1696,7 +1696,7 @@ static int dskDesktopCommand (HMENU hDesktopMenu, int id)
|
||||
&& (pWin->pHosting == NULL)
|
||||
#endif
|
||||
)
|
||||
PostMessage ((HWND)pWin, MSG_CLOSE, 0, 0);
|
||||
PostMessage ((HWND)pWin, MSG_CLOSE, 0, 0);
|
||||
}
|
||||
|
||||
slot = __mg_zorder_info->first_normal;
|
||||
@@ -1978,7 +1978,7 @@ static int dskGetIMEStatus (int iIMEStatusCode)
|
||||
|
||||
void GUIAPI DesktopUpdateAllWindow(void)
|
||||
{
|
||||
SendMessage(HWND_DESKTOP, MSG_PAINT, 0, 0);
|
||||
SendMessage(HWND_DESKTOP, MSG_PAINT, 0, 0);
|
||||
}
|
||||
|
||||
#ifndef _MG_ENABLE_SCREENSAVER
|
||||
@@ -2087,7 +2087,7 @@ LRESULT DesktopWinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
if(dsk_ops->init)
|
||||
dt_context = dsk_ops->init();
|
||||
#ifdef _MGHAVE_MENU
|
||||
sg_DesktopMenu = dskCreateDesktopMenu ();
|
||||
sg_DesktopMenu = dskCreateDesktopMenu ();
|
||||
#endif
|
||||
|
||||
break;
|
||||
@@ -2097,12 +2097,12 @@ LRESULT DesktopWinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
__mg_init_local_sys_text ();
|
||||
|
||||
#ifdef _MGHAVE_MENU
|
||||
if (sg_DesktopMenu) {
|
||||
DestroyMenu (sg_DesktopMenu);
|
||||
sg_DesktopMenu = 0;
|
||||
}
|
||||
if (sg_DesktopMenu) {
|
||||
DestroyMenu (sg_DesktopMenu);
|
||||
sg_DesktopMenu = 0;
|
||||
}
|
||||
|
||||
sg_DesktopMenu = dskCreateDesktopMenu ();
|
||||
sg_DesktopMenu = dskCreateDesktopMenu ();
|
||||
#endif
|
||||
|
||||
SendMessage (HWND_DESKTOP, MSG_ERASEDESKTOP, 0, 0);
|
||||
@@ -2242,6 +2242,9 @@ LRESULT DesktopWinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
case MSG_DT_MOUSEMOVE:
|
||||
case MSG_DT_RBUTTONDOWN:
|
||||
case MSG_DT_RBUTTONDBLCLK:
|
||||
case MSG_DT_MBUTTONDOWN:
|
||||
case MSG_DT_MBUTTONDBLCLK:
|
||||
case MSG_DT_MBUTTONUP:
|
||||
if(dsk_ops->mouse_handler)
|
||||
dsk_ops->mouse_handler(dt_context, message, wParam, lParam);
|
||||
break;
|
||||
@@ -2264,8 +2267,10 @@ LRESULT DesktopWinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
uCounter += (__mg_timer_counter - blink_counter) * 10;
|
||||
blink_counter = __mg_timer_counter;
|
||||
|
||||
#else
|
||||
static DWORD blink_counter = 0;
|
||||
static DWORD sg_old_counter = 0;
|
||||
|
||||
if (__mg_quiting_stage < 0) {
|
||||
int slot;
|
||||
PMSGQUEUE pMsgQueue;
|
||||
@@ -2307,12 +2312,16 @@ LRESULT DesktopWinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
}
|
||||
}
|
||||
|
||||
mg_dispatch_timer_message (1);
|
||||
if (MG_UNLIKELY(sg_old_counter == 0))
|
||||
sg_old_counter = __mg_timer_counter;
|
||||
mg_dispatch_timer_message (__mg_timer_counter - sg_old_counter);
|
||||
sg_old_counter = __mg_timer_counter;
|
||||
|
||||
if (__mg_timer_counter % 10 != 0)
|
||||
if (__mg_timer_counter < (blink_counter + 10))
|
||||
break;
|
||||
|
||||
uCounter += 100;
|
||||
uCounter += (__mg_timer_counter - blink_counter) * 10;
|
||||
blink_counter = __mg_timer_counter;
|
||||
#endif
|
||||
if (sg_hCaretWnd != 0
|
||||
&& gui_GetMainWindowPtrOfControl (sg_hCaretWnd) == dskGetActiveWindow()
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
/*
|
||||
* This file is part of MiniGUI, a mature cross-platform windowing
|
||||
* This file is part of MiniGUI, a mature cross-platform windowing
|
||||
* and Graphics User Interface (GUI) support system for embedded systems
|
||||
* and smart IoT devices.
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2002~2018, Beijing FMSoft Technologies Co., Ltd.
|
||||
* Copyright (C) 1998~2002, WEI Yongming
|
||||
*
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* Or,
|
||||
*
|
||||
*
|
||||
* As this program is a library, any link to this program must follow
|
||||
* GNU General Public License version 3 (GPLv3). If you cannot accept
|
||||
* GPLv3, you need to be licensed from FMSoft.
|
||||
*
|
||||
*
|
||||
* If you have got a commercial license of this program, please use it
|
||||
* under the terms and conditions of the commercial license.
|
||||
*
|
||||
*
|
||||
* For more information about the commercial license, please refer to
|
||||
* <http://www.minigui.com/en/about/licensing-policy/>.
|
||||
*/
|
||||
@@ -37,7 +37,7 @@
|
||||
** Current maintainer: Wei Yongming.
|
||||
**
|
||||
** Create date: 1999/04/21
|
||||
*/
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -78,40 +78,17 @@ static pthread_mutex_t timerLock;
|
||||
#define TIMER_UNLOCK()
|
||||
#endif
|
||||
|
||||
#if defined(__LINUX__) && defined(_MGRM_THREADS)
|
||||
# define _MG_USE_BETTER_TIMER
|
||||
#endif /* __LINUX__ */
|
||||
|
||||
#ifdef _MG_USE_BETTER_TIMER
|
||||
#ifdef _MGRM_THREADS
|
||||
#include <sys/times.h>
|
||||
static clock_t g_timer_started;
|
||||
#endif
|
||||
static clock_t g_last_tick;
|
||||
#endif
|
||||
|
||||
/* timer action for minigui timers */
|
||||
static void __mg_timer_action (void *data)
|
||||
{
|
||||
#ifdef _MGRM_PROCESSES
|
||||
SHAREDRES_TIMER_COUNTER += 1;
|
||||
#else
|
||||
|
||||
#if defined(_MGRM_STANDALONE)
|
||||
__mg_timer_counter += 10;
|
||||
#else
|
||||
# ifdef _MG_USE_BETTER_TIMER
|
||||
__mg_timer_counter = times(NULL) - g_timer_started;
|
||||
# else /* _MG_USE_BETTER_TIMER */
|
||||
__mg_timer_counter ++;
|
||||
# endif /* _MG_USE_BETTER_TIMER */
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef _MGRM_THREADS
|
||||
#if defined(_MGRM_PROCESSES)
|
||||
SHAREDRES_TIMER_COUNTER = __mg_os_get_time_ms()/10;
|
||||
#elif defined(_MGRM_THREADS)
|
||||
__mg_timer_counter = __mg_os_get_time_ms()/10;
|
||||
/* alert desktop */
|
||||
AlertDesktopTimerEvent ();
|
||||
#else /* _MGRM_STANDALONE */
|
||||
// do nothing
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -129,11 +106,6 @@ static void* TimerEntry (void* data)
|
||||
{
|
||||
sem_post ((sem_t*)data);
|
||||
|
||||
#ifdef _MG_USE_BETTER_TIMER
|
||||
g_timer_started = times(NULL);
|
||||
g_last_tick = 0;
|
||||
#endif /* _MG_USE_BETTER_TIMER */
|
||||
|
||||
while (__mg_quiting_stage > _MG_QUITING_STAGE_TIMER) {
|
||||
__mg_os_time_delay (10);
|
||||
__mg_timer_action (NULL);
|
||||
@@ -152,8 +124,8 @@ int __mg_timer_init (void)
|
||||
}
|
||||
|
||||
#ifdef __AOS__
|
||||
__mg_os_timer = tp_os_timer_create ("mgtimer", __mg_timer_action,
|
||||
NULL, AOS_TIMER_TICKT,
|
||||
__mg_os_timer = tp_os_timer_create ("mgtimer", __mg_timer_action,
|
||||
NULL, AOS_TIMER_TICKT,
|
||||
OS_AUTO_ACTIVATE | OS_AUTO_LOAD);
|
||||
#else /* NOT __AOS__ */
|
||||
{
|
||||
@@ -195,7 +167,7 @@ BOOL mg_InstallIntervalTimer (void)
|
||||
{
|
||||
struct itimerval timerv;
|
||||
struct sigaction siga;
|
||||
|
||||
|
||||
sigaction (SIGALRM, NULL, &old_alarm_handler);
|
||||
|
||||
siga = old_alarm_handler;
|
||||
@@ -243,6 +215,8 @@ BOOL mg_UninstallIntervalTimer (void)
|
||||
|
||||
BOOL mg_InitTimer (void)
|
||||
{
|
||||
__mg_os_start_time_ms();
|
||||
|
||||
#ifdef _MGRM_THREADS
|
||||
pthread_mutex_init (&timerLock, NULL);
|
||||
__mg_timer_counter = 0;
|
||||
@@ -287,12 +261,8 @@ void mg_dispatch_timer_message (DWORD inter)
|
||||
{
|
||||
int i;
|
||||
|
||||
#ifdef _MG_USE_BETTER_TIMER
|
||||
clock_t now = __mg_timer_counter;
|
||||
|
||||
inter = now - g_last_tick;
|
||||
g_last_tick = now;
|
||||
#endif /* _MG_USE_BETTER_TIMER */
|
||||
if (inter == 0)
|
||||
return;
|
||||
|
||||
TIMER_LOCK ();
|
||||
|
||||
@@ -306,7 +276,7 @@ void mg_dispatch_timer_message (DWORD inter)
|
||||
timerstr[i]->tick_count = __mg_timer_counter;
|
||||
#endif
|
||||
/* setting timer flag is simple, we do not need to lock msgq,
|
||||
or else we may encounter dead lock here */
|
||||
or else we may encounter dead lock here */
|
||||
SetMsgQueueTimerFlag (timerstr[i]->msg_queue, i);
|
||||
timerstr[i]->count -= timerstr[i]->speed;
|
||||
}
|
||||
@@ -377,7 +347,7 @@ void __mg_move_timer_last (TIMER* timer, int slot)
|
||||
}
|
||||
#endif
|
||||
|
||||
BOOL GUIAPI SetTimerEx (HWND hWnd, LINT id, DWORD speed,
|
||||
BOOL GUIAPI SetTimerEx (HWND hWnd, LINT id, DWORD speed,
|
||||
TIMERPROC timer_proc)
|
||||
{
|
||||
int i;
|
||||
@@ -438,7 +408,7 @@ BOOL GUIAPI SetTimerEx (HWND hWnd, LINT id, DWORD speed,
|
||||
|
||||
TIMER_UNLOCK ();
|
||||
return TRUE;
|
||||
|
||||
|
||||
badret:
|
||||
TIMER_UNLOCK ();
|
||||
return FALSE;
|
||||
@@ -519,7 +489,7 @@ int GUIAPI KillTimer (HWND hWnd, LINT id)
|
||||
TIMER_LOCK ();
|
||||
|
||||
for (i = 0; i < DEF_NR_TIMERS; i++) {
|
||||
if ((timerstr [i] && timerstr [i]->hWnd == hWnd) &&
|
||||
if ((timerstr [i] && timerstr [i]->hWnd == hWnd) &&
|
||||
(id == 0 || timerstr [i]->id == id)) {
|
||||
RemoveMsgQueueTimerFlag (pMsgQueue, i);
|
||||
free (timerstr[i]);
|
||||
@@ -539,7 +509,7 @@ int GUIAPI KillTimer (HWND hWnd, LINT id)
|
||||
return killed;
|
||||
}
|
||||
|
||||
BOOL GUIAPI ResetTimerEx (HWND hWnd, LINT id, DWORD speed,
|
||||
BOOL GUIAPI ResetTimerEx (HWND hWnd, LINT id, DWORD speed,
|
||||
TIMERPROC timer_proc)
|
||||
{
|
||||
int i;
|
||||
@@ -616,8 +586,7 @@ DWORD GUIAPI GetTickCount (void)
|
||||
#ifdef _MGRM_PROCESSES
|
||||
return SHAREDRES_TIMER_COUNTER;
|
||||
#elif defined(_MGRM_STANDALONE)
|
||||
extern DWORD __mg_os_get_time(void);
|
||||
__mg_timer_counter = __mg_os_get_time() / 10;
|
||||
__mg_timer_counter = __mg_os_get_time_ms()/10;
|
||||
return __mg_timer_counter;
|
||||
#else
|
||||
return __mg_timer_counter;
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
/*
|
||||
* This file is part of MiniGUI, a mature cross-platform windowing
|
||||
* This file is part of MiniGUI, a mature cross-platform windowing
|
||||
* and Graphics User Interface (GUI) support system for embedded systems
|
||||
* and smart IoT devices.
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2002~2018, Beijing FMSoft Technologies Co., Ltd.
|
||||
* Copyright (C) 1998~2002, WEI Yongming
|
||||
*
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* Or,
|
||||
*
|
||||
*
|
||||
* As this program is a library, any link to this program must follow
|
||||
* GNU General Public License version 3 (GPLv3). If you cannot accept
|
||||
* GPLv3, you need to be licensed from FMSoft.
|
||||
*
|
||||
*
|
||||
* If you have got a commercial license of this program, please use it
|
||||
* under the terms and conditions of the commercial license.
|
||||
*
|
||||
*
|
||||
* For more information about the commercial license, please refer to
|
||||
* <http://www.minigui.com/en/about/licensing-policy/>.
|
||||
*/
|
||||
@@ -36,7 +36,7 @@
|
||||
static timer_t mytimer;
|
||||
static struct sigaction old_alarm_handler;
|
||||
|
||||
void timer_handler (int sig, siginfo_t *extra, void *cruft)
|
||||
static void timer_handler (int sig, siginfo_t *extra, void *cruft)
|
||||
{
|
||||
int sem_value;
|
||||
int noverflow;
|
||||
@@ -82,24 +82,24 @@ BOOL mg_InitTimer (void)
|
||||
|
||||
/* create a timer based upon the CLOCK_REALTIME clock */
|
||||
|
||||
it.it_interval.tv_sec=0;
|
||||
|
||||
it.it_interval.tv_sec=0;
|
||||
|
||||
/* set resolution to one-tenth of the maximum allowed */
|
||||
|
||||
it.it_interval.tv_nsec=resolution.tv_nsec;
|
||||
//it.it_interval.tv_nsec=10000000;
|
||||
it.it_value=it.it_interval;
|
||||
it.it_interval.tv_nsec=resolution.tv_nsec;
|
||||
//it.it_interval.tv_nsec=10000000;
|
||||
it.it_value=it.it_interval;
|
||||
|
||||
timer_event.sigev_notify=SIGEV_SIGNAL;
|
||||
timer_event.sigev_signo= SIGRTMIN;
|
||||
timer_event.sigev_value.sival_ptr = (void *)&mytimer;
|
||||
timer_event.sigev_notify=SIGEV_SIGNAL;
|
||||
timer_event.sigev_signo= SIGRTMIN;
|
||||
timer_event.sigev_value.sival_ptr = (void *)&mytimer;
|
||||
|
||||
if (timer_create(CLOCK_REALTIME, &timer_event, &mytimer) < 0){
|
||||
if (timer_create(CLOCK_REALTIME, &timer_event, &mytimer) < 0){
|
||||
perror("timer create error");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* relative timer, go off at the end of the interval*/
|
||||
}
|
||||
|
||||
/* relative timer, go off at the end of the interval*/
|
||||
if (timer_settime(mytimer, 0 , &it, NULL) < 0){
|
||||
perror("settimer");
|
||||
return FALSE;
|
||||
@@ -119,7 +119,7 @@ void mg_TerminateTimer (void)
|
||||
if (sigaction (SIGRTMIN, &old_alarm_handler, NULL) == -1) {
|
||||
fprintf (stderr, "KERNEL>Timer: sigaction call failed!\n");
|
||||
perror ("sigaction");
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
for (i=0; i<MAX_TIMERS; i++) {
|
||||
|
||||
@@ -1432,7 +1432,7 @@ char * strtrimall( char *src)
|
||||
return src;
|
||||
}
|
||||
|
||||
BOOL mg_is_abs_path(const char* path)
|
||||
BOOL __mg_is_abs_path(const char* path)
|
||||
{
|
||||
if (NULL != path) {
|
||||
#ifdef WIN32
|
||||
@@ -1448,10 +1448,10 @@ BOOL mg_is_abs_path(const char* path)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int mg_path_joint(char* dst, int dst_size, const char* abs_path, const char* sub_path)
|
||||
int __mg_path_joint(char* dst, int dst_size, const char* abs_path, const char* sub_path)
|
||||
{
|
||||
if (NULL != dst && NULL != abs_path && NULL != sub_path) {
|
||||
if (mg_is_abs_path(abs_path) && (!mg_is_abs_path(sub_path))) {
|
||||
if (__mg_is_abs_path(abs_path) && (!__mg_is_abs_path(sub_path))) {
|
||||
if (dst_size >= strlen(abs_path) + strlen(sub_path)
|
||||
+ 2/* size of split '/' and terminator '\0' */) {
|
||||
sprintf(dst, "%s/%s", abs_path, sub_path);
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
/*
|
||||
* This file is part of MiniGUI, a mature cross-platform windowing
|
||||
* This file is part of MiniGUI, a mature cross-platform windowing
|
||||
* and Graphics User Interface (GUI) support system for embedded systems
|
||||
* and smart IoT devices.
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2002~2018, Beijing FMSoft Technologies Co., Ltd.
|
||||
* Copyright (C) 1998~2002, WEI Yongming
|
||||
*
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* Or,
|
||||
*
|
||||
*
|
||||
* As this program is a library, any link to this program must follow
|
||||
* GNU General Public License version 3 (GPLv3). If you cannot accept
|
||||
* GPLv3, you need to be licensed from FMSoft.
|
||||
*
|
||||
*
|
||||
* If you have got a commercial license of this program, please use it
|
||||
* under the terms and conditions of the commercial license.
|
||||
*
|
||||
*
|
||||
* For more information about the commercial license, please refer to
|
||||
* <http://www.minigui.com/en/about/licensing-policy/>.
|
||||
*/
|
||||
/*
|
||||
** nposix.c: This file include some miscelleous functions not
|
||||
** provided by POSIX.
|
||||
** nposix.c: This file includes some miscelleous functions should be
|
||||
** implemented for different operating systems.
|
||||
**
|
||||
** Create date: 2003/11/22
|
||||
**
|
||||
@@ -104,7 +104,7 @@ int strncasecmp (const char *s1, const char *s2, unsigned int n)
|
||||
#ifdef WIN32
|
||||
int fread_long_win32(char* buff, size_t size, int count, FILE* fp)
|
||||
{
|
||||
char *tmp;
|
||||
char *tmp;
|
||||
size_t ret, rest = size * count;
|
||||
int len;
|
||||
|
||||
@@ -116,7 +116,7 @@ int fread_long_win32(char* buff, size_t size, int count, FILE* fp)
|
||||
tmp = buff;
|
||||
ret = 0;
|
||||
while(rest > 0)
|
||||
{
|
||||
{
|
||||
if((len = fread(tmp, 1, 1024, fp)) != 1024)
|
||||
{
|
||||
ret += len;
|
||||
@@ -140,7 +140,7 @@ double hypot(double x, double y)
|
||||
|
||||
#if defined (__VXWORKS__) ||defined(WIN32) || defined (__NUCLEUS_MNT__) || defined (_EM86_IAL) || defined (_EM85_IAL)
|
||||
|
||||
/*
|
||||
/*
|
||||
* Implementation of cbrt(x) for Win32 platform.
|
||||
* cbrt(x): Return cube root of x
|
||||
*/
|
||||
@@ -218,7 +218,7 @@ do { \
|
||||
} while (0)
|
||||
|
||||
|
||||
static const Uint32
|
||||
static const Uint32
|
||||
B1 = 715094163, /* B1 = (682-0.03306235651)*2**20 */
|
||||
B2 = 696219795; /* B2 = (664-0.03306235651)*2**20 */
|
||||
|
||||
@@ -229,7 +229,7 @@ E = 1.41428571428571436819e+00, /* 99/70 = 0x3FF6A0EA, 0x0EA0EA0F */
|
||||
F = 1.60714285714285720630e+00, /* 45/28 = 0x3FF9B6DB, 0x6DB6DB6E */
|
||||
G = 3.57142857142857150787e-01; /* 5/14 = 0x3FD6DB6D, 0xB6DB6DB7 */
|
||||
|
||||
double cbrt (double x)
|
||||
double cbrt (double x)
|
||||
{
|
||||
Sint32 hx;
|
||||
double r,s,t=0.0,w;
|
||||
@@ -241,7 +241,7 @@ double cbrt (double x)
|
||||
hx ^=sign;
|
||||
if(hx>=0x7ff00000) return(x+x); /* cbrt(NaN,INF) is itself */
|
||||
GET_LOW_WORD(low,x);
|
||||
if((hx|low)==0)
|
||||
if((hx|low)==0)
|
||||
return(x); /* cbrt(0) is itself */
|
||||
|
||||
SET_HIGH_WORD(x,hx); /* x <- |x| */
|
||||
@@ -257,9 +257,9 @@ double cbrt (double x)
|
||||
/* new cbrt to 23 bits, may be implemented in single precision */
|
||||
r=t*t/x;
|
||||
s=C+r*t;
|
||||
t*=G+F/(s+E+D/s);
|
||||
t*=G+F/(s+E+D/s);
|
||||
|
||||
/* chopped to 20 bits and make it larger than cbrt(x) */
|
||||
/* chopped to 20 bits and make it larger than cbrt(x) */
|
||||
GET_HIGH_WORD(high,t);
|
||||
INSERT_WORDS(t,high+0x00000001,0);
|
||||
|
||||
@@ -284,7 +284,7 @@ double cbrt (double x)
|
||||
double x1, x2;
|
||||
double x3;
|
||||
|
||||
if (x <= 1E-6)
|
||||
if (x <= 1E-6)
|
||||
return 0.0;
|
||||
|
||||
x2 = x;
|
||||
@@ -292,7 +292,7 @@ double cbrt (double x)
|
||||
x1 = x2;
|
||||
x2 = (2.0 * x1 + x / (x1 *x1)) /3.0;
|
||||
x3 = (x2 - x1) / x1;
|
||||
if (x3 < 0.0)
|
||||
if (x3 < 0.0)
|
||||
x3 = -x3;
|
||||
if (x3 < 1E-6) break;
|
||||
}
|
||||
@@ -354,9 +354,9 @@ int shmdt(const void *shmaddr)
|
||||
}
|
||||
*/
|
||||
|
||||
#endif
|
||||
#endif /* __CYGWIN__ */
|
||||
|
||||
/* ------------------------------ time delay -------------------------------- */
|
||||
/* ------------------------------ time and delay-------------------------------- */
|
||||
|
||||
#ifndef __NOUNIX__
|
||||
#include <unistd.h>
|
||||
@@ -411,7 +411,7 @@ void __mg_os_time_delay (int ms)
|
||||
while (select (0, NULL, NULL, NULL, &timeout) < 0);
|
||||
#elif defined (__UCOSII__)
|
||||
OSTimeDly (OS_TICKS_PER_SEC * ms / 1000);
|
||||
#elif defined (__VXWORKS__)
|
||||
#elif defined (__VXWORKS__)
|
||||
taskDelay (sysClkRateGet() * ms / 1000);
|
||||
#elif defined (__PSOS__) || defined (__ECOS__)
|
||||
struct timespec ts;
|
||||
@@ -430,19 +430,65 @@ void __mg_os_time_delay (int ms)
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef __NOUNIX__
|
||||
#if defined (WIN32)
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#pragma comment(lib, "winmm.lib")
|
||||
|
||||
void __mg_os_start_time_ms(void)
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
|
||||
DWORD __mg_os_get_time_ms(void) {
|
||||
return timeGetTime();
|
||||
}
|
||||
|
||||
#elif defined (HAVE_CLOCK_GETTIME)
|
||||
|
||||
static struct timespec timeval_startup;
|
||||
void __mg_os_start_time_ms(void)
|
||||
{
|
||||
clock_gettime(CLOCK_MONOTONIC, &timeval_startup);
|
||||
}
|
||||
|
||||
DWORD __mg_os_get_time_ms(void)
|
||||
{
|
||||
DWORD ds, dms;
|
||||
struct timespec current;
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC, ¤t);
|
||||
ds = (current.tv_sec - timeval_startup.tv_sec);
|
||||
|
||||
if (current.tv_sec == timeval_startup.tv_sec) {
|
||||
dms = (current.tv_nsec - timeval_startup.tv_nsec) / 1000000L;
|
||||
}
|
||||
else if (current.tv_nsec >= timeval_startup.tv_nsec) {
|
||||
dms = (current.tv_nsec - timeval_startup.tv_nsec) / 1000000L;
|
||||
}
|
||||
else {
|
||||
assert(ds > 0);
|
||||
|
||||
ds--;
|
||||
dms = 1000L - (timeval_startup.tv_nsec - current.tv_nsec) / 1000000L;
|
||||
}
|
||||
|
||||
return ds * 1000 + dms;
|
||||
}
|
||||
|
||||
#if 0
|
||||
#include <unistd.h>
|
||||
#include <poll.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
static struct timeval timeval_startup;
|
||||
void __mg_os_start_time(void)
|
||||
void __mg_os_start_time_ms(void)
|
||||
{
|
||||
gettimeofday(&timeval_startup, NULL);
|
||||
}
|
||||
|
||||
DWORD __mg_os_get_time(void)
|
||||
DWORD __mg_os_get_time_ms(void)
|
||||
{
|
||||
DWORD ds, dms;
|
||||
struct timeval current;
|
||||
@@ -465,28 +511,56 @@ DWORD __mg_os_get_time(void)
|
||||
|
||||
return ds * 1000 + dms;
|
||||
}
|
||||
|
||||
#elif defined(WIN32)
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#pragma comment(lib, "winmm.lib")
|
||||
|
||||
void __mg_os_start_time(void)
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
|
||||
DWORD __mg_os_get_time(void) {
|
||||
return timeGetTime();
|
||||
}
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#error "Please implement __mg_os_start_time and __mg_os_get_time for your OS"
|
||||
#error "Please implement __mg_os_start_time_ms and __mg_os_get_time_ms for your OS"
|
||||
|
||||
#endif
|
||||
|
||||
time_t __mg_os_time (time_t * timer)
|
||||
{
|
||||
#if defined (HAVE_TIME)
|
||||
return time (timer);
|
||||
#else
|
||||
#warn "Please implement __mg_os_time for your OS"
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
time_t __mg_os_mktime (struct tm * timeptr)
|
||||
{
|
||||
#if defined (HAVE_MKTIME)
|
||||
return mktime (timeptr);
|
||||
#else
|
||||
#warn "Please implement __mg_os_mktime for your OS"
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
struct tm *__mg_os_localtime (const time_t * timer)
|
||||
{
|
||||
#if defined (HAVE_LOCALTIME)
|
||||
return localtime (timer);
|
||||
#else
|
||||
#warn "Please implement __mg_os_localtime for your OS"
|
||||
static struct tm _19800101_tm = {
|
||||
0, /* tm_sec: seconds */
|
||||
0, /* tm_min: minutes */
|
||||
0, /* tm_hour: hours */
|
||||
1, /* tm_mday: day of the month (1st) */
|
||||
0, /* tm_mon: month (Jan) */
|
||||
80, /* tm_year: year (1980) */
|
||||
2, /* tm_wday: day of the week (1980/01/01 is Tuesday) */
|
||||
0, /* tm_yday: day in the year */
|
||||
0, /* tm_isdst daylight saving time */
|
||||
};
|
||||
|
||||
return &_19800101_tm;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ------------------------------ I/O -------------------------------- */
|
||||
void __mg_rewind (FILE *fp)
|
||||
{
|
||||
@@ -515,6 +589,7 @@ int __mg_close_tmpfile (FILE *tmp_fp)
|
||||
return fclose (tmp_fp);
|
||||
}
|
||||
|
||||
/* ------------------------------ Misc -------------------------------- */
|
||||
#ifdef __TARGET_C33L05__
|
||||
|
||||
#undef HAVE_TIME
|
||||
@@ -538,48 +613,9 @@ int snprintf( char *s, size_t size, const char *format, ... )
|
||||
|
||||
int __modsi3 (int numer, int denom)
|
||||
{
|
||||
int quot = numer / denom;
|
||||
return numer - (quot * denom);
|
||||
int quot = numer / denom;
|
||||
return numer - (quot * denom);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
time_t __mg_time (time_t * timer)
|
||||
{
|
||||
#if defined (HAVE_TIME)
|
||||
return time (timer);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
time_t __mg_mktime (struct tm * timeptr)
|
||||
{
|
||||
#if defined (HAVE_MKTIME)
|
||||
return mktime (timeptr);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
struct tm *__mg_localtime (const time_t * timer)
|
||||
{
|
||||
#if defined (HAVE_LOCALTIME)
|
||||
return localtime (timer);
|
||||
#else
|
||||
static struct tm _19800101_tm = {
|
||||
0, /* tm_sec: seconds */
|
||||
0, /* tm_min: minutes */
|
||||
0, /* tm_hour: hours */
|
||||
1, /* tm_mday: day of the month (1st) */
|
||||
0, /* tm_mon: month (Jan) */
|
||||
80, /* tm_year: year (1980) */
|
||||
2, /* tm_wday: day of the week (1980/01/01 is Tuesday) */
|
||||
0, /* tm_yday: day in the year */
|
||||
0, /* tm_isdst daylight saving time */
|
||||
};
|
||||
|
||||
return &_19800101_tm;
|
||||
#endif
|
||||
}
|
||||
#endif /* __TARGET_C33L05__ */
|
||||
|
||||
|
||||
@@ -159,8 +159,8 @@ static void ParseEvent (PMSGQUEUE msg_que, int event)
|
||||
}
|
||||
}
|
||||
|
||||
extern void __mg_os_start_time(void);
|
||||
extern DWORD __mg_os_get_time(void);
|
||||
extern void __mg_os_start_time_ms(void);
|
||||
extern DWORD __mg_os_get_time_ms(void);
|
||||
|
||||
BOOL GUIAPI salone_StandAloneStartup (void)
|
||||
{
|
||||
@@ -171,7 +171,7 @@ BOOL GUIAPI salone_StandAloneStartup (void)
|
||||
mg_InstallIntervalTimer ();
|
||||
#endif
|
||||
|
||||
__mg_os_start_time();
|
||||
__mg_os_start_time_ms();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -244,7 +244,7 @@ BOOL salone_IdleHandler4StandAlone (PMSGQUEUE msg_queue)
|
||||
n = IAL_WaitEvent (mg_maxfd, &rset, wsetptr, esetptr,
|
||||
msg_queue?&sel_timeout:&sel_timeout_nd, &extra);
|
||||
/* update __mg_timer_counter */
|
||||
__mg_timer_counter = __mg_os_get_time()/10;
|
||||
__mg_timer_counter = __mg_os_get_time_ms()/10;
|
||||
#endif
|
||||
|
||||
if (msg_queue == NULL)
|
||||
|
||||
Reference in New Issue
Block a user