annotate src/atimer.h @ 33697:e7765cb122c3

(Fw32_set_clipboard_data): Save a copy of what is put on the clipboard. (Fw32_get_clipboard_data): Compare data on clipboard with saved copy of what Emacs last put there. If they are the same, do not use the clipboard copy to avoid losing data due to coding conversions.
author Jason Rumney <jasonr@gnu.org>
date Tue, 21 Nov 2000 19:18:13 +0000
parents cc1255965fcc
children 7ca787d18982
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27433
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1 /* Asynchronous timers.
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2 Copyright (C) 2000 Free Software Foundation, Inc.
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4 This file is part of GNU Emacs.
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9 any later version.
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
14 GNU General Public License for more details.
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
15
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 Boston, MA 02111-1307, USA. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20
29927
cc1255965fcc Protect against multiple inclusion. Include
Dave Love <fx@gnu.org>
parents: 27671
diff changeset
21 #ifndef EMACS_ATIMER_H
cc1255965fcc Protect against multiple inclusion. Include
Dave Love <fx@gnu.org>
parents: 27671
diff changeset
22 #define EMACS_ATIMER_H
cc1255965fcc Protect against multiple inclusion. Include
Dave Love <fx@gnu.org>
parents: 27671
diff changeset
23
cc1255965fcc Protect against multiple inclusion. Include
Dave Love <fx@gnu.org>
parents: 27671
diff changeset
24 #include "systime.h" /* for EMACS_TIME */
cc1255965fcc Protect against multiple inclusion. Include
Dave Love <fx@gnu.org>
parents: 27671
diff changeset
25
27433
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26 /* Forward declaration. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28 struct atimer;
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
30 /* Types of timers. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
31
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
32 enum atimer_type
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
33 {
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
34 /* Timer is ripe at some absolute time. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
35 ATIMER_ABSOLUTE,
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
36
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
37 /* Timer is ripe at now plus an offset. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
38 ATIMER_RELATIVE,
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
39
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
40 /* Timer runs continously. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
41 ATIMER_CONTINUOUS
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
42 };
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
43
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
44 /* Type of timer callback functions. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
45
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
46 typedef void (* atimer_callback) P_ ((struct atimer *timer));
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
47
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
48 /* Structure describing an asynchronous timer. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
49
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
50 struct atimer
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
51 {
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
52 /* The type of this timer. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
53 enum atimer_type type;
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
54
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
55 /* Time when this timer is ripe. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
56 EMACS_TIME expiration;
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
57
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
58 /* Interval of this timer. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
59 EMACS_TIME interval;
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
60
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
61 /* Function to call when timer is ripe. Interupt input is
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
62 garanteed to not be blocked when this function is called. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
63 atimer_callback fn;
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
64
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
65 /* Additional user-specified data to pass to FN. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
66 void *client_data;
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
67
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
68 /* Next in list of active or free atimers. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
69 struct atimer *next;
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
70 };
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
71
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
72 /* Function prototypes. */
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
73
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
74 struct atimer *start_atimer P_ ((enum atimer_type, EMACS_TIME,
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
75 atimer_callback, void *));
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
76 void cancel_atimer P_ ((struct atimer *));
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
77 void do_pending_atimers P_ ((void));
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
78 void init_atimer P_ ((void));
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
79 void turn_on_atimers P_ ((int));
27671
466a99bee7fd (stop_other_atimers, run_all_atimers)
Gerd Moellmann <gerd@gnu.org>
parents: 27433
diff changeset
80 void stop_other_atimers P_ ((struct atimer *));
466a99bee7fd (stop_other_atimers, run_all_atimers)
Gerd Moellmann <gerd@gnu.org>
parents: 27433
diff changeset
81 void run_all_atimers P_ ((void));
466a99bee7fd (stop_other_atimers, run_all_atimers)
Gerd Moellmann <gerd@gnu.org>
parents: 27433
diff changeset
82 Lisp_Object unwind_stop_other_atimers P_ ((Lisp_Object));
27433
87dcc6a2c31b *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
83
29927
cc1255965fcc Protect against multiple inclusion. Include
Dave Love <fx@gnu.org>
parents: 27671
diff changeset
84 #endif /* EMACS_ATIMER_H */