507
|
1 /*
|
|
2 * Geeqie
|
|
3 * Copyright (C) 2008 The Geeqie Team
|
|
4 *
|
|
5 * Authors: Vladimir Nadvornik, Laurent Monin
|
|
6 *
|
|
7 * This software is released under the GNU General Public License (GNU GPL).
|
|
8 * Please read the included file COPYING for more information.
|
|
9 * This software comes with no warranty of any kind, use at your own risk!
|
|
10 */
|
|
11
|
|
12 #include "main.h"
|
|
13 #include "debug.h"
|
|
14
|
|
15 #ifdef DEBUG
|
|
16
|
|
17 static gint debug_level = DEBUG_LEVEL_MIN;
|
|
18
|
|
19
|
|
20 gint get_debug_level(void)
|
|
21 {
|
|
22 return debug_level;
|
|
23 }
|
|
24
|
|
25 void set_debug_level(gint new_level)
|
|
26 {
|
|
27 debug_level = CLAMP(new_level, DEBUG_LEVEL_MIN, DEBUG_LEVEL_MAX);
|
|
28 }
|
|
29
|
|
30 void debug_level_add(gint delta)
|
|
31 {
|
|
32 set_debug_level(debug_level + delta);
|
|
33 }
|
|
34
|
|
35 gint required_debug_level(gint level)
|
|
36 {
|
|
37 return (debug_level >= level);
|
|
38 }
|
|
39
|
509
|
40 static gint timeval_delta(struct timeval *result, struct timeval *x, struct timeval *y)
|
|
41 {
|
|
42 if (x->tv_usec < y->tv_usec)
|
|
43 {
|
|
44 gint nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1;
|
|
45 y->tv_usec -= 1000000 * nsec;
|
|
46 y->tv_sec += nsec;
|
|
47 }
|
|
48
|
|
49 if (x->tv_usec - y->tv_usec > 1000000)
|
|
50 {
|
|
51 gint nsec = (x->tv_usec - y->tv_usec) / 1000000;
|
|
52 y->tv_usec += 1000000 * nsec;
|
|
53 y->tv_sec -= nsec;
|
|
54 }
|
|
55
|
|
56 result->tv_sec = x->tv_sec - y->tv_sec;
|
|
57 result->tv_usec = x->tv_usec - y->tv_usec;
|
|
58
|
|
59 return x->tv_sec < y->tv_sec;
|
|
60 }
|
|
61
|
|
62 const gchar *get_exec_time(void)
|
|
63 {
|
|
64 static gchar timestr[30];
|
|
65 static struct timeval start_tv = {0, 0};
|
|
66 static struct timeval previous = {0, 0};
|
|
67 static gint started = 0;
|
|
68
|
|
69 struct timeval tv = {0, 0};
|
|
70 static struct timeval delta = {0, 0};
|
|
71
|
|
72 gettimeofday(&tv, NULL);
|
|
73
|
|
74 if (start_tv.tv_sec == 0) start_tv = tv;
|
|
75
|
|
76 tv.tv_sec -= start_tv.tv_sec;
|
|
77 if (tv.tv_usec >= start_tv.tv_usec)
|
|
78 tv.tv_usec -= start_tv.tv_usec;
|
|
79 else
|
|
80 {
|
|
81 tv.tv_usec += 1000000 - start_tv.tv_usec;
|
|
82 tv.tv_sec -= 1;
|
|
83 }
|
|
84
|
|
85 if (started) timeval_delta(&delta, &tv, &previous);
|
|
86
|
|
87 previous = tv;
|
|
88 started = 1;
|
|
89
|
|
90 g_snprintf(timestr, sizeof(timestr), "%5d.%06d (+%05d.%06d)", (int)tv.tv_sec, (int)tv.tv_usec, (int)delta.tv_sec, (int)delta.tv_usec);
|
|
91
|
|
92 return timestr;
|
|
93 }
|
|
94
|
|
95 void init_exec_time(void)
|
|
96 {
|
|
97 get_exec_time();
|
|
98 }
|
|
99
|
507
|
100 #endif
|