
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. EVERYTHING ELSE GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5094 54d463be-8e91-2dee-dedb-b68131a5f0ec
102 lines
2.5 KiB
C
102 lines
2.5 KiB
C
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include "../common/plugin.h"
|
|
//Needed for strcmpi
|
|
#include "../common/mmo.h"
|
|
|
|
// "I'm Alive" and "Flush stdout" Originally by Mugendai
|
|
// Ported to plugin by Celest
|
|
|
|
PLUGIN_INFO = {
|
|
"AthenaGUI",
|
|
PLUGIN_CORE,
|
|
"1.0",
|
|
PLUGIN_VERSION,
|
|
"Core plugin for Athena GUI functions"
|
|
};
|
|
|
|
PLUGIN_EVENTS_TABLE = {
|
|
{ "gui_init", "Plugin_Init" },
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
unsigned int (*gettick)();
|
|
int (*add_timer_func_list)(int (*)(int,unsigned int,int,int),char*);
|
|
int (*add_timer_interval)(unsigned int,int (*)(int,unsigned int,int,int),int,int,int);
|
|
|
|
//-----------------------------------------------------
|
|
//I'm Alive Alert
|
|
//Used to output 'I'm Alive' every few seconds
|
|
//Intended to let frontends know if the app froze
|
|
//-----------------------------------------------------
|
|
int imalive_timer(int tid, unsigned int tick, int id, int data){
|
|
printf("I'm Alive\n");
|
|
return 0;
|
|
}
|
|
|
|
//-----------------------------------------------------
|
|
//Flush stdout
|
|
//stdout buffer needs flushed to be seen in GUI
|
|
//-----------------------------------------------------
|
|
int flush_timer(int tid, unsigned int tick, int id, int data){
|
|
fflush(stdout);
|
|
return 0;
|
|
}
|
|
|
|
void gui_init ()
|
|
{
|
|
char line[1024], w1[1024], w2[1024];
|
|
int flush_on = 0;
|
|
int flush_time = 100;
|
|
int imalive_on = 0;
|
|
int imalive_time = 30;
|
|
char **argv;
|
|
int *argc;
|
|
FILE *fp;
|
|
int i;
|
|
|
|
IMPORT_SYMBOL(argc, 2);
|
|
IMPORT_SYMBOL(argv, 3);
|
|
IMPORT_SYMBOL(gettick, 5);
|
|
IMPORT_SYMBOL(add_timer_interval, 8);
|
|
IMPORT_SYMBOL(add_timer_func_list, 9);
|
|
|
|
do {
|
|
fp = fopen("plugins/gui.conf","r");
|
|
if (fp == NULL)
|
|
break;
|
|
|
|
while(fgets(line, sizeof(line) -1, fp)) {
|
|
if (line[0] == '/' && line[1] == '/')
|
|
continue;
|
|
if (sscanf(line, "%[^:]: %[^\r\n]", w1, w2) == 2) {
|
|
if(strcmpi(w1,"imalive_on")==0){
|
|
imalive_on = atoi(w2);
|
|
} else if(strcmpi(w1,"imalive_time")==0){
|
|
imalive_time = atoi(w2);
|
|
} else if(strcmpi(w1,"flush_on")==0){
|
|
flush_on = atoi(w2);
|
|
} else if(strcmpi(w1,"flush_time")==0){
|
|
flush_time = atoi(w2);
|
|
}
|
|
}
|
|
}
|
|
fclose(fp);
|
|
} while (0);
|
|
|
|
for (i = 1; i < *argc ; i++)
|
|
if (strcmp(argv[i], "--gui") == 0)
|
|
flush_on = imalive_on = 1;
|
|
|
|
if (flush_on) {
|
|
add_timer_func_list(flush_timer, "flush_timer");
|
|
add_timer_interval(gettick()+1000,flush_timer,0,0,flush_time);
|
|
}
|
|
if (imalive_on) {
|
|
add_timer_func_list(imalive_timer, "imalive_timer");
|
|
add_timer_interval(gettick()+10, imalive_timer,0,0,imalive_time*1000);
|
|
}
|
|
}
|