summaryrefslogtreecommitdiff
path: root/src/cairo-time-private.h
diff options
context:
space:
mode:
authorAndrea Canciani <ranma42@gmail.com>2011-08-30 16:15:28 +0200
committerAndrea Canciani <ranma42@gmail.com>2011-09-02 12:27:13 +0200
commit0101a545793291d0fe76b765ba8392ade5faa1a1 (patch)
tree7294a6416e8036672b41cae84c3f2ff6849154f3 /src/cairo-time-private.h
parente7204a3631d29d334511f291db8c31ce0026e2ce (diff)
downloadcairo-0101a545793291d0fe76b765ba8392ade5faa1a1.tar.gz
time: Add cairo_time_t type
Add the cairo_time_t type (currently based on cairo_uint64_t) and use it in cairo-observer and in the perf suite. Fixes the build on MacOS X (for the src/ subdir) and Win32, whch failed because they don't provide clock_gettime: cairo-surface-observer.c:629: error: implicit declaration of function 'clock_gettime' cairo-surface-observer.c:629: warning: nested extern declaration of 'clock_gettime' cairo-surface-observer.c:629: error: 'CLOCK_MONOTONIC' undeclared (first use in this function) ...
Diffstat (limited to 'src/cairo-time-private.h')
-rw-r--r--src/cairo-time-private.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/cairo-time-private.h b/src/cairo-time-private.h
new file mode 100644
index 000000000..f7c48f389
--- /dev/null
+++ b/src/cairo-time-private.h
@@ -0,0 +1,93 @@
+/* cairo - a vector graphics library with display and print output
+ *
+ * Copyright (C) 2011 Andrea Canciani
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of the
+ * copyright holders not be used in advertising or publicity
+ * pertaining to distribution of the software without specific,
+ * written prior permission. The copyright holders make no
+ * representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Authors: Andrea Canciani <ranma42@gmail.com>
+ *
+ */
+
+#ifndef CAIRO_TIME_PRIVATE_H
+#define CAIRO_TIME_PRIVATE_H
+
+#include "cairo-compiler-private.h"
+#include "cairo-wideint-private.h"
+
+typedef cairo_uint64_t cairo_time_t;
+
+#define _cairo_time_add _cairo_uint64_add
+#define _cairo_time_sub _cairo_uint64_sub
+#define _cairo_time_gt _cairo_uint64_gt
+#define _cairo_time_lt _cairo_uint64_lt
+
+#define _cairo_time_to_double _cairo_uint64_to_double
+#define _cairo_time_from_double _cairo_double_to_uint64
+
+cairo_private int
+_cairo_time_cmp (const void *a,
+ const void *b);
+
+cairo_private double
+_cairo_time_to_s (cairo_time_t t);
+
+cairo_private cairo_time_t
+_cairo_time_from_s (double t);
+
+cairo_private cairo_time_t
+_cairo_time_get (void);
+
+static cairo_always_inline cairo_time_t
+_cairo_time_get_delta (cairo_time_t t)
+{
+ cairo_time_t now;
+
+ now = _cairo_time_get ();
+
+ return _cairo_time_sub (now, t);
+}
+
+static cairo_always_inline double
+_cairo_time_to_ns (cairo_time_t t)
+{
+ return 1.e9 * _cairo_time_to_s (t);
+}
+
+static cairo_always_inline cairo_time_t
+_cairo_time_max (cairo_time_t a, cairo_time_t b)
+{
+ if (_cairo_uint64_gt (a, b))
+ return a;
+ else
+ return b;
+}
+
+static cairo_always_inline cairo_time_t
+_cairo_time_min (cairo_time_t a, cairo_time_t b)
+{
+ if (_cairo_uint64_lt (a, b))
+ return a;
+ else
+ return b;
+}
+
+#endif