annotate src/idle.c @ 11849:dc51cdcb648e

[gaim-migrate @ 14140] sf patch #1339135, from Sadrul Habib Chowdhury Hi. Bleeter found this bug: (1) open up some conversation window (2) open the smiley dialog (3) close the conversation window. the smiley dialog remains open (4) select some smiley (5) Gaim crashes This patch fixes this crash. It shouldn't cause any probs with regards to gtk-version-checking. The other code handling the smiley-dialog doesn't do the version-checking, so this shouldn't be necessary either. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Thu, 27 Oct 2005 12:00:17 +0000
parents 743b574c81b9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
1 /*
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
2 * gaim
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
3 *
8046
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 7475
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 7475
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 7475
diff changeset
6 * source distribution.
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
7 *
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
8 * This program is free software; you can redistribute it and/or modify
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
9 * it under the terms of the GNU General Public License as published by
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
11 * (at your option) any later version.
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
12 *
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
13 * This program is distributed in the hope that it will be useful,
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
16 * GNU General Public License for more details.
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
17 *
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
18 * You should have received a copy of the GNU General Public License
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
19 * along with this program; if not, write to the Free Software
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21 *
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
22 */
9791
4a15962c344a [gaim-migrate @ 10659]
Mark Doliner <mark@kingant.net>
parents: 9730
diff changeset
23 #include "internal.h"
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
24
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
25 #ifdef USE_SCREENSAVER
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
26 # ifndef _WIN32
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
27 # include <X11/Xlib.h>
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
28 # include <X11/Xutil.h>
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
29 # include <X11/extensions/scrnsaver.h>
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
30 # include <gdk/gdkx.h>
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
31 # else
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
32 # include "idletrack.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
33 # endif
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
34 #endif /* USE_SCREENSAVER */
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
35
5615
6500a6c8d679 [gaim-migrate @ 6022]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
36 #include "connection.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
37 #include "debug.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
38 #include "log.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
39 #include "prefs.h"
11677
8004885fabbe [gaim-migrate @ 13963]
Mark Doliner <mark@kingant.net>
parents: 11654
diff changeset
40 #include "savedstatuses.h"
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
41 #include "signals.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
42
11677
8004885fabbe [gaim-migrate @ 13963]
Mark Doliner <mark@kingant.net>
parents: 11654
diff changeset
43 #define IDLEMARK 600 /* 10 minutes! */
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
44
10319
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
45 typedef enum
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
46 {
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
47 GAIM_IDLE_NOT_AWAY = 0,
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
48 GAIM_IDLE_AUTO_AWAY,
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
49 GAIM_IDLE_AWAY_BUT_NOT_AUTO_AWAY
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
50
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
51 } GaimAutoAwayState;
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
52
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
53 #ifdef USE_SCREENSAVER
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
54 /**
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
55 * Get the number of seconds the user has been idle. In Unix-world
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
56 * this is based on the X Windows usage. In MS Windows this is based
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
57 * on keyboard/mouse usage.
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
58 *
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
59 * In Debian bug #271639, jwz says:
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
60 *
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
61 * Gaim should simply ask xscreensaver how long the user has been idle:
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
62 * % xscreensaver-command -time
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
63 * XScreenSaver 4.18: screen blanked since Tue Sep 14 14:10:45 2004
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
64 *
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
65 * Or you can monitor the _SCREENSAVER_STATUS property on root window #0.
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
66 * Element 0 is the status (0, BLANK, LOCK), element 1 is the time_t since
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
67 * the last state change, and subsequent elements are which hack is running
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
68 * on the various screens:
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
69 * % xprop -f _SCREENSAVER_STATUS 32ac -root _SCREENSAVER_STATUS
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
70 * _SCREENSAVER_STATUS(INTEGER) = BLANK, 1095196626, 10, 237
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
71 *
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
72 * See watch() in xscreensaver/driver/xscreensaver-command.c.
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
73 *
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
74 * @return The number of seconds the user has been idle.
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
75 */
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
76 static int
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
77 get_idle_time_from_system()
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
78 {
10319
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
79 #ifndef _WIN32
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
80 static XScreenSaverInfo *mit_info = NULL;
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
81 int event_base, error_base;
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
82 if (XScreenSaverQueryExtension(GDK_DISPLAY(), &event_base, &error_base)) {
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
83 if (mit_info == NULL) {
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
84 mit_info = XScreenSaverAllocInfo();
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
85 }
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
86 XScreenSaverQueryInfo(GDK_DISPLAY(), GDK_ROOT_WINDOW(), mit_info);
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
87 return (mit_info->idle) / 1000;
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
88 } else
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
89 return 0;
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
90 #else
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
91 return (GetTickCount() - wgaim_get_lastactive()) / 1000;
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
92 #endif
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
93 }
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
94 #endif /* USE_SCREENSAVER */
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
95
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
96 /*
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
97 * This function should be called when you think your idle state
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
98 * may have changed. Maybe you're over the 10-minute mark and
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
99 * Gaim should start reporting idle time to the server. Maybe
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
100 * you've returned from being idle. Maybe your auto-away message
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
101 * should be set.
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
102 *
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
103 * There is no harm to calling this many many times, other than
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
104 * it will be kinda slow. This is called every 20 seconds by a
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
105 * timer set when an account logs in. It is also called when
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
106 * you send an IM, a chat, etc.
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
107 *
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
108 * This function has 3 sections.
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
109 * 1. Get your idle time. It will query XScreenSaver or Windows
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
110 * or get the Gaim idle time. Whatever.
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
111 * 2. Set or unset your auto-away message.
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
112 * 3. Report your current idle time to the IM server.
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
113 */
11677
8004885fabbe [gaim-migrate @ 13963]
Mark Doliner <mark@kingant.net>
parents: 11654
diff changeset
114 /* TODO: This needs to be namespaced or moved elsewhere. */
10319
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
115 gint
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
116 check_idle(gpointer data)
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
117 {
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
118 GaimConnection *gc = data;
11287
fb6e85c55fb8 [gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10423
diff changeset
119 gboolean report_idle;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5560
diff changeset
120 GaimAccount *account;
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
121 time_t t;
4201
511c2b63caa4 [gaim-migrate @ 4432]
Christian Hammond <chipx86@chipx86.com>
parents: 3905
diff changeset
122 int idle_time;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
123
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5560
diff changeset
124 account = gaim_connection_get_account(gc);
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5560
diff changeset
125
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
126 gaim_signal_emit(gaim_blist_get_handle(), "update-idle");
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1141
diff changeset
127
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
128 time(&t);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
129
11287
fb6e85c55fb8 [gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10423
diff changeset
130 report_idle = gaim_prefs_get_bool("/gaim/gtk/idle/report");
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
131
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
132 #ifdef USE_SCREENSAVER
10319
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
133 idle_time = get_idle_time_from_system();
11697
186d2d293ef4 [gaim-migrate @ 13988]
Mark Doliner <mark@kingant.net>
parents: 11677
diff changeset
134 #else
186d2d293ef4 [gaim-migrate @ 13988]
Mark Doliner <mark@kingant.net>
parents: 11677
diff changeset
135 /*
186d2d293ef4 [gaim-migrate @ 13988]
Mark Doliner <mark@kingant.net>
parents: 11677
diff changeset
136 * If Gaim wasn't built with xscreensaver support, then
186d2d293ef4 [gaim-migrate @ 13988]
Mark Doliner <mark@kingant.net>
parents: 11677
diff changeset
137 * fallback to calculating our idle time based on when
186d2d293ef4 [gaim-migrate @ 13988]
Mark Doliner <mark@kingant.net>
parents: 11677
diff changeset
138 * we last sent a message.
186d2d293ef4 [gaim-migrate @ 13988]
Mark Doliner <mark@kingant.net>
parents: 11677
diff changeset
139 */
186d2d293ef4 [gaim-migrate @ 13988]
Mark Doliner <mark@kingant.net>
parents: 11677
diff changeset
140 idle_time = t - gc->last_sent_time;
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
141 #endif /* USE_SCREENSAVER */
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
142
11697
186d2d293ef4 [gaim-migrate @ 13988]
Mark Doliner <mark@kingant.net>
parents: 11677
diff changeset
143 /* Should we become auto-away? */
5560
b7319c094153 [gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents: 5548
diff changeset
144 if (gaim_prefs_get_bool("/core/away/away_when_idle") &&
5748
c6a30e1868ae [gaim-migrate @ 6173]
Nathan Walp <nwalp@pidgin.im>
parents: 5615
diff changeset
145 (idle_time > (60 * gaim_prefs_get_int("/core/away/mins_before_away")))
9949
ced29c7b396c [gaim-migrate @ 10845]
Luke Schierer <lschiere@pidgin.im>
parents: 9944
diff changeset
146 && (!gc->is_auto_away))
ced29c7b396c [gaim-migrate @ 10845]
Luke Schierer <lschiere@pidgin.im>
parents: 9944
diff changeset
147 {
ced29c7b396c [gaim-migrate @ 10845]
Luke Schierer <lschiere@pidgin.im>
parents: 9944
diff changeset
148 GaimPresence *presence;
ced29c7b396c [gaim-migrate @ 10845]
Luke Schierer <lschiere@pidgin.im>
parents: 9944
diff changeset
149
ced29c7b396c [gaim-migrate @ 10845]
Luke Schierer <lschiere@pidgin.im>
parents: 9944
diff changeset
150 presence = gaim_account_get_presence(account);
5560
b7319c094153 [gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents: 5548
diff changeset
151
9949
ced29c7b396c [gaim-migrate @ 10845]
Luke Schierer <lschiere@pidgin.im>
parents: 9944
diff changeset
152 if (gaim_presence_is_available(presence))
ced29c7b396c [gaim-migrate @ 10845]
Luke Schierer <lschiere@pidgin.im>
parents: 9944
diff changeset
153 {
11654
bf6ba37db13b [gaim-migrate @ 13938]
Mark Doliner <mark@kingant.net>
parents: 11287
diff changeset
154 const char *idleaway_name;
11677
8004885fabbe [gaim-migrate @ 13963]
Mark Doliner <mark@kingant.net>
parents: 11654
diff changeset
155 GaimSavedStatus *saved_status;
6216
dc42b27101c0 [gaim-migrate @ 6702]
Nathan Walp <nwalp@pidgin.im>
parents: 5872
diff changeset
156
10319
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
157 gaim_debug_info("idle", "Making %s auto-away\n",
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
158 gaim_account_get_username(account));
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
159
11654
bf6ba37db13b [gaim-migrate @ 13938]
Mark Doliner <mark@kingant.net>
parents: 11287
diff changeset
160 /* Mark our accounts "away" using the idleaway status */
bf6ba37db13b [gaim-migrate @ 13938]
Mark Doliner <mark@kingant.net>
parents: 11287
diff changeset
161 idleaway_name = gaim_prefs_get_string("/core/status/idleaway");
11677
8004885fabbe [gaim-migrate @ 13963]
Mark Doliner <mark@kingant.net>
parents: 11654
diff changeset
162 saved_status = gaim_savedstatus_find(idleaway_name);
11725
743b574c81b9 [gaim-migrate @ 14016]
Mark Doliner <mark@kingant.net>
parents: 11724
diff changeset
163 if (saved_status)
743b574c81b9 [gaim-migrate @ 14016]
Mark Doliner <mark@kingant.net>
parents: 11724
diff changeset
164 gaim_savedstatus_activate(saved_status);
6216
dc42b27101c0 [gaim-migrate @ 6702]
Nathan Walp <nwalp@pidgin.im>
parents: 5872
diff changeset
165
10319
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
166 gc->is_auto_away = GAIM_IDLE_AUTO_AWAY;
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
167 } else {
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
168 gc->is_auto_away = GAIM_IDLE_AWAY_BUT_NOT_AUTO_AWAY;
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
169 }
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9791
diff changeset
170
10319
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
171 /* Should we return from being auto-away? */
5748
c6a30e1868ae [gaim-migrate @ 6173]
Nathan Walp <nwalp@pidgin.im>
parents: 5615
diff changeset
172 } else if (gc->is_auto_away &&
c6a30e1868ae [gaim-migrate @ 6173]
Nathan Walp <nwalp@pidgin.im>
parents: 5615
diff changeset
173 idle_time < 60 * gaim_prefs_get_int("/core/away/mins_before_away")) {
10319
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
174 if (gc->is_auto_away == GAIM_IDLE_AWAY_BUT_NOT_AUTO_AWAY) {
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
175 gc->is_auto_away = GAIM_IDLE_NOT_AWAY;
1815
f15d449b3167 [gaim-migrate @ 1825]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1575
diff changeset
176 return TRUE;
1446
38f712e75836 [gaim-migrate @ 1456]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1407
diff changeset
177 }
10319
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
178 gc->is_auto_away = GAIM_IDLE_NOT_AWAY;
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9791
diff changeset
179
10319
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
180 /* XXX STATUS AWAY CORE/UI */
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
181 /* Need to set this connection to available here */
1109
c73736fa0b7c [gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1062
diff changeset
182 }
c73736fa0b7c [gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1062
diff changeset
183
11287
fb6e85c55fb8 [gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10423
diff changeset
184 /* Deal with reporting idleness to the server, if appropriate */
fb6e85c55fb8 [gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10423
diff changeset
185 if (report_idle && idle_time >= IDLEMARK && !gc->is_idle) {
10319
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
186 gaim_debug_info("idle", "Setting %s idle %d seconds\n",
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5560
diff changeset
187 gaim_account_get_username(account), idle_time);
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
188 serv_set_idle(gc, idle_time);
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
189 gc->is_idle = 1;
7475
08ce2a94d9c7 [gaim-migrate @ 8088]
Mark Doliner <mark@kingant.net>
parents: 7431
diff changeset
190 /* LOG system_log(log_idle, gc, NULL, OPT_LOG_BUDDY_IDLE | OPT_LOG_MY_SIGNON); */
11287
fb6e85c55fb8 [gaim-migrate @ 13484]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10423
diff changeset
191 } else if ((!report_idle || idle_time < IDLEMARK) && gc->is_idle) {
10319
32e7baa81e03 [gaim-migrate @ 11526]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
192 gaim_debug_info("idle", "Setting %s unidle\n",
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5560
diff changeset
193 gaim_account_get_username(account));
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
194 serv_touch_idle(gc);
7475
08ce2a94d9c7 [gaim-migrate @ 8088]
Mark Doliner <mark@kingant.net>
parents: 7431
diff changeset
195 /* LOG system_log(log_unidle, gc, NULL, OPT_LOG_BUDDY_IDLE | OPT_LOG_MY_SIGNON); */
1029
740c6f933fe0 [gaim-migrate @ 1039]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1028
diff changeset
196 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
197
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
198 return TRUE;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
199 }