⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.c

📁 一个很有名的浏览器
💻 C
字号:
/* Internal inactivity timer. *//* $Id: timer.c,v 1.14 2004/12/02 16:34:01 zas Exp $ */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include "elinks.h"#include "config/kbdbind.h"#include "config/options.h"#include "lowlevel/select.h"#include "lowlevel/timer.h"#include "sched/event.h"#include "terminal/event.h"#include "terminal/terminal.h"/* Timer for periodically saving configuration files to disk */static int periodic_save_timer = -1;static int countdown = -1;int timer_duration = 0;static voidcount_down(void *xxx){	struct term_event ev = INIT_TERM_EVENT(EVENT_KBD, -1, 0, 0);	struct keybinding *kb;	struct terminal *terminal;	timer_duration--;	if (timer_duration) {		countdown = install_timer(1000, count_down, NULL);		return;	} else {		countdown = -1;	}	kb = kbd_nm_lookup(KEYMAP_MAIN, get_opt_str("ui.timer.action"), NULL);	if (kb) {		ev.info.keyboard.key = kb->key;		ev.info.keyboard.modifier = kb->meta;		foreach (terminal, terminals) {			term_send_event(terminal, &ev);		}	}	reset_timer();}voidreset_timer(void){	if (countdown >= 0) {		kill_timer(countdown);		countdown = -1;	}	if (!get_opt_int("ui.timer.enable")) return;	timer_duration = get_opt_int("ui.timer.duration");	countdown = install_timer(1000, count_down, NULL);}static voidperiodic_save_handler(void *xxx){	static int periodic_save_event_id = EVENT_NONE;	int interval;	if (get_cmd_opt_bool("anonymous")) return;	/* Don't trigger anything at startup */	if (periodic_save_event_id == EVENT_NONE)		set_event_id(periodic_save_event_id, "periodic-saving");	else		trigger_event(periodic_save_event_id);	interval = get_opt_int("infofiles.save_interval") * 1000;	if (!interval) return;	periodic_save_timer = install_timer(interval, periodic_save_handler, NULL);}static intperiodic_save_change_hook(struct session *ses, struct option *current,			  struct option *changed){	if (get_cmd_opt_bool("anonymous")) return 0;	if (periodic_save_timer != -1) {		kill_timer(periodic_save_timer);		periodic_save_timer = -1;	}	periodic_save_handler(NULL);	return 0;}voidinit_timer(void){	struct change_hook_info timer_change_hooks[] = {		{ "infofiles.save_interval", periodic_save_change_hook },		{ NULL,	NULL },	};	register_change_hooks(timer_change_hooks);	periodic_save_handler(NULL);	reset_timer();}voiddone_timer(void){	if (periodic_save_timer >= 0) kill_timer(periodic_save_timer);	if (countdown >= 0) kill_timer(countdown);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -