use symbolic constants for server screen rotation, little optimizations
This commit is contained in:
+1
-1
@@ -434,7 +434,7 @@ process_configfile(char *configfile)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (rotate_server_screen == UNSET_INT) {
|
if (rotate_server_screen == UNSET_INT) {
|
||||||
rotate_server_screen = config_get_tristate("Server", "ServerScreen", 0, "never", UNSET_INT);
|
rotate_server_screen = config_get_tristate("Server", "ServerScreen", 0, "blank", UNSET_INT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (backlight == UNSET_INT) {
|
if (backlight == UNSET_INT) {
|
||||||
|
|||||||
+24
-25
@@ -1,5 +1,8 @@
|
|||||||
|
/** \file serverscreens.c
|
||||||
|
* Implement the serverscreens.
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* serverscreens.c
|
|
||||||
* This file is part of LCDd, the lcdproc server.
|
* This file is part of LCDd, the lcdproc server.
|
||||||
*
|
*
|
||||||
* This file is released under the GNU General Public License. Refer to the
|
* This file is released under the GNU General Public License. Refer to the
|
||||||
@@ -9,9 +12,6 @@
|
|||||||
* 2002, Joris Robijn
|
* 2002, Joris Robijn
|
||||||
* 2007, Peter Marschall
|
* 2007, Peter Marschall
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* Implements the serverscreens
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -35,18 +35,22 @@
|
|||||||
#include "serverscreens.h"
|
#include "serverscreens.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* global variables */
|
||||||
Screen *server_screen = NULL;
|
Screen *server_screen = NULL;
|
||||||
int rotate_server_screen = UNSET_INT;
|
int rotate_server_screen = UNSET_INT;
|
||||||
|
|
||||||
|
/* file-local variables */
|
||||||
|
static int has_hello_msg = 0;
|
||||||
|
|
||||||
int
|
int
|
||||||
server_screen_init(void)
|
server_screen_init(void)
|
||||||
{
|
{
|
||||||
Widget *w;
|
Widget *w;
|
||||||
int i;
|
int i;
|
||||||
int has_hello_msg = config_has_key("Server", "Hello");
|
|
||||||
|
|
||||||
debug(RPT_DEBUG, "server_screen_init");
|
has_hello_msg = config_has_key("Server", "Hello");
|
||||||
|
|
||||||
|
debug(RPT_DEBUG, "%s()", __FUNCTION__);
|
||||||
|
|
||||||
/* Create the screen */
|
/* Create the screen */
|
||||||
server_screen = screen_create("_server_screen", NULL);
|
server_screen = screen_create("_server_screen", NULL);
|
||||||
@@ -57,12 +61,8 @@ server_screen_init(void)
|
|||||||
server_screen->name = "Server screen";
|
server_screen->name = "Server screen";
|
||||||
server_screen->duration = RENDER_FREQ; /* 1 second, instead of 4...*/
|
server_screen->duration = RENDER_FREQ; /* 1 second, instead of 4...*/
|
||||||
server_screen->heartbeat = (has_hello_msg) ? HEARTBEAT_OFF : HEARTBEAT_OPEN;
|
server_screen->heartbeat = (has_hello_msg) ? HEARTBEAT_OFF : HEARTBEAT_OPEN;
|
||||||
|
server_screen->priority = (rotate_server_screen == SERVERSCREEN_ON)
|
||||||
if ((rotate_server_screen == UNSET_INT) || (rotate_server_screen == 1)) {
|
? PRI_INFO : PRI_BACKGROUND;
|
||||||
server_screen->priority = PRI_INFO;
|
|
||||||
} else {
|
|
||||||
server_screen->priority = PRI_BACKGROUND;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create all the widgets...*/
|
/* Create all the widgets...*/
|
||||||
for (i = 0; i < display_props->height; i++) {
|
for (i = 0; i < display_props->height; i++) {
|
||||||
@@ -70,7 +70,7 @@ server_screen_init(void)
|
|||||||
sprintf(id, "line%d", i+1);
|
sprintf(id, "line%d", i+1);
|
||||||
|
|
||||||
w = widget_create(id, WID_STRING, server_screen);
|
w = widget_create(id, WID_STRING, server_screen);
|
||||||
if (!w) {
|
if (w == NULL) {
|
||||||
report(RPT_ERR, "server_screen_init: Can't create a widget");
|
report(RPT_ERR, "server_screen_init: Can't create a widget");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -118,39 +118,38 @@ server_screen_shutdown(void)
|
|||||||
int
|
int
|
||||||
update_server_screen(void)
|
update_server_screen(void)
|
||||||
{
|
{
|
||||||
|
static int hello_done = 0;
|
||||||
Client *c;
|
Client *c;
|
||||||
Widget *w;
|
Widget *w;
|
||||||
int num_clients;
|
int num_clients = 0;
|
||||||
int num_screens;
|
int num_screens = 0;
|
||||||
static int use_default = 0;
|
|
||||||
|
|
||||||
/* Now get info on the number of connected clients...*/
|
/* get info on the number of connected clients...*/
|
||||||
num_clients = clients_client_count();
|
num_clients = clients_client_count();
|
||||||
|
|
||||||
/* turn off the Hello message after the first client onnected */
|
/* turn off the Hello message after the first client onnected */
|
||||||
if (!use_default && config_has_key("Server", "Hello")) {
|
if (has_hello_msg && !hello_done) {
|
||||||
if (num_clients != 0) {
|
if (num_clients != 0) {
|
||||||
if (!use_default) {
|
if (!hello_done) {
|
||||||
server_screen->heartbeat = HEARTBEAT_OPEN;
|
server_screen->heartbeat = HEARTBEAT_OPEN;
|
||||||
|
|
||||||
w = screen_find_widget(server_screen, "line1");
|
w = screen_find_widget(server_screen, "line1");
|
||||||
w->type = WID_TITLE;
|
w->type = WID_TITLE;
|
||||||
strncpy(w->text, "LCDproc Server", LCD_MAX_WIDTH);
|
strncpy(w->text, "LCDproc Server", LCD_MAX_WIDTH);
|
||||||
}
|
}
|
||||||
use_default = 1;
|
hello_done = 1;
|
||||||
}
|
}
|
||||||
if (!use_default)
|
if (!hello_done)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ... and screens */
|
/* ... and screens */
|
||||||
num_screens = 0;
|
|
||||||
for (c = clients_getfirst(); c != NULL; c = clients_getnext()) {
|
for (c = clients_getfirst(); c != NULL; c = clients_getnext()) {
|
||||||
num_screens += client_screen_count(c);
|
num_screens += client_screen_count(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Format strings for the appropriate size display... */
|
/* format strings for the appropriate display size ... */
|
||||||
if (display_props->height >= 3) {
|
if (display_props->height >= 3) { /* >2-line display */
|
||||||
w = screen_find_widget(server_screen, "line2");
|
w = screen_find_widget(server_screen, "line2");
|
||||||
if (w != NULL) {
|
if (w != NULL) {
|
||||||
snprintf(w->text, LCD_MAX_WIDTH,
|
snprintf(w->text, LCD_MAX_WIDTH,
|
||||||
@@ -162,7 +161,7 @@ update_server_screen(void)
|
|||||||
snprintf(w->text, LCD_MAX_WIDTH,
|
snprintf(w->text, LCD_MAX_WIDTH,
|
||||||
"Screens: %i", num_screens);
|
"Screens: %i", num_screens);
|
||||||
}
|
}
|
||||||
} else {
|
} else { /* 2-line display */
|
||||||
w = screen_find_widget(server_screen, "line2");
|
w = screen_find_widget(server_screen, "line2");
|
||||||
if (w != NULL) {
|
if (w != NULL) {
|
||||||
snprintf(w->text, LCD_MAX_WIDTH,
|
snprintf(w->text, LCD_MAX_WIDTH,
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
|
/** \file serverscreens.h
|
||||||
|
* Interface for the serverscreen implementation
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* serverscreens.h
|
|
||||||
* This file is part of LCDd, the lcdproc server.
|
* This file is part of LCDd, the lcdproc server.
|
||||||
*
|
*
|
||||||
* This file is released under the GNU General Public License. Refer to the
|
* This file is released under the GNU General Public License. Refer to the
|
||||||
@@ -17,7 +20,7 @@
|
|||||||
/* server screen rotation states */
|
/* server screen rotation states */
|
||||||
#define SERVERSCREEN_OFF 0 /* show server screen in rotation */
|
#define SERVERSCREEN_OFF 0 /* show server screen in rotation */
|
||||||
#define SERVERSCREEN_ON 1 /* show server sreen only when there is no other screen */
|
#define SERVERSCREEN_ON 1 /* show server sreen only when there is no other screen */
|
||||||
#define SERVERSCREEN_NEVER 2 /* don't rotate, and only show a blank screen [not implemented] */
|
#define SERVERSCREEN_BLANK 2 /* don't rotate, and only show a blank screen [not implemented] */
|
||||||
|
|
||||||
extern Screen *server_screen;
|
extern Screen *server_screen;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user