Mercurial > emacs
comparison src/mac.c @ 82288:d2b18c3b227c
[TARGET_API_MAC_CARBON] (cfdate_to_lisp): Obtain microsec value.
Use kCFAbsoluteTimeIntervalSince1970.
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
---|---|
date | Mon, 06 Aug 2007 08:25:06 +0000 |
parents | 286623bef670 |
children | 4a8f2bf9fced 424b655804ca |
comparison
equal
deleted
inserted
replaced
82287:f2f7731c3eed | 82288:d2b18c3b227c |
---|---|
1125 | 1125 |
1126 Lisp_Object | 1126 Lisp_Object |
1127 cfdate_to_lisp (date) | 1127 cfdate_to_lisp (date) |
1128 CFDateRef date; | 1128 CFDateRef date; |
1129 { | 1129 { |
1130 static const CFGregorianDate epoch_gdate = {1970, 1, 1, 0, 0, 0.0}; | 1130 CFTimeInterval sec; |
1131 static CFAbsoluteTime epoch = 0.0, sec; | 1131 int high, low, microsec; |
1132 int high, low; | 1132 |
1133 | 1133 sec = CFDateGetAbsoluteTime (date) + kCFAbsoluteTimeIntervalSince1970; |
1134 if (epoch == 0.0) | |
1135 epoch = CFGregorianDateGetAbsoluteTime (epoch_gdate, NULL); | |
1136 | |
1137 sec = CFDateGetAbsoluteTime (date) - epoch; | |
1138 high = sec / 65536.0; | 1134 high = sec / 65536.0; |
1139 low = sec - high * 65536.0; | 1135 low = sec - high * 65536.0; |
1140 | 1136 microsec = (sec - floor (sec)) * 1000000.0; |
1141 return list3 (make_number (high), make_number (low), make_number (0)); | 1137 |
1138 return list3 (make_number (high), make_number (low), make_number (microsec)); | |
1142 } | 1139 } |
1143 | 1140 |
1144 | 1141 |
1145 /* CFBoolean to a lisp symbol, `t' or `nil'. */ | 1142 /* CFBoolean to a lisp symbol, `t' or `nil'. */ |
1146 | 1143 |