mirror of
https://github.com/netfun2000/lcd4linux.git
synced 2026-02-27 09:44:34 +08:00
special commandline parameters for X11
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@1067 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
This commit is contained in:
@@ -41,6 +41,14 @@ typedef struct DRIVER {
|
|||||||
*/
|
*/
|
||||||
extern char *output;
|
extern char *output;
|
||||||
|
|
||||||
|
#ifdef WITH_X11
|
||||||
|
/* function to handle special X11 command line parameters
|
||||||
|
* has to be defined here because it's referenced
|
||||||
|
* in main before dealing with normal parameters.
|
||||||
|
*/
|
||||||
|
void drv_X11_parseArgs(int *argc, char *arvg[]);
|
||||||
|
#endif
|
||||||
|
|
||||||
int drv_list(void);
|
int drv_list(void);
|
||||||
int drv_init(const char *section, const char *driver, const int quiet);
|
int drv_init(const char *section, const char *driver, const int quiet);
|
||||||
int drv_quit(const int quiet);
|
int drv_quit(const int quiet);
|
||||||
|
|||||||
@@ -49,6 +49,7 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
|
#include <X11/Xresource.h>
|
||||||
|
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "cfg.h"
|
#include "cfg.h"
|
||||||
@@ -93,6 +94,14 @@ static GC gc;
|
|||||||
static Colormap cm;
|
static Colormap cm;
|
||||||
static Pixmap pm;
|
static Pixmap pm;
|
||||||
|
|
||||||
|
static char myDisplayName[256] = "";
|
||||||
|
static int opTableEntries = 2;
|
||||||
|
static XrmOptionDescRec opTable[] = {
|
||||||
|
{"-display", ".display", XrmoptionSepArg, NULL},
|
||||||
|
{"-synchronous", "*synchronous", XrmoptionNoArg, "on"},
|
||||||
|
};
|
||||||
|
static XrmDatabase commandlineDB;
|
||||||
|
|
||||||
|
|
||||||
/****************************************/
|
/****************************************/
|
||||||
/*** hardware dependant functions ***/
|
/*** hardware dependant functions ***/
|
||||||
@@ -413,6 +422,8 @@ static int drv_X11_start(const char *section)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char *s;
|
char *s;
|
||||||
|
XrmValue value;
|
||||||
|
char *str_type[20];
|
||||||
XSetWindowAttributes wa;
|
XSetWindowAttributes wa;
|
||||||
XSizeHints sh;
|
XSizeHints sh;
|
||||||
XEvent ev;
|
XEvent ev;
|
||||||
@@ -489,11 +500,21 @@ static int drv_X11_start(const char *section)
|
|||||||
drv_X11_FB[i] = NO_COL;
|
drv_X11_FB[i] = NO_COL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((dp = XOpenDisplay(NULL)) == NULL) {
|
if (XrmGetResource(commandlineDB, "lcd4linux.display", "Lcd4linux.Display", str_type, &value)) {
|
||||||
error("%s: can't open display", Name);
|
strncpy(myDisplayName, value.addr, value.size);
|
||||||
|
debug("%s: X11 display name from command line: %s", Name, myDisplayName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((dp = XOpenDisplay(strlen(myDisplayName) > 0 ? myDisplayName : NULL)) == NULL) {
|
||||||
|
error("%s: can't open display %s", Name, XDisplayName(strlen(myDisplayName) > 0 ? myDisplayName : NULL));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (XrmGetResource(commandlineDB, "lcd4linux*synchronous", "Lcd4linux*Synchronous", str_type, &value)) {
|
||||||
|
debug("%s: X synchronize on", Name);
|
||||||
|
XSynchronize(dp, 1 /* true */ );
|
||||||
|
}
|
||||||
|
|
||||||
sc = DefaultScreen(dp);
|
sc = DefaultScreen(dp);
|
||||||
gc = DefaultGC(dp, sc);
|
gc = DefaultGC(dp, sc);
|
||||||
vi = DefaultVisual(dp, sc);
|
vi = DefaultVisual(dp, sc);
|
||||||
@@ -595,6 +616,15 @@ int drv_X11_list(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* read X11 specific command line arguments */
|
||||||
|
/* it is defined in drv.h */
|
||||||
|
void drv_X11_parseArgs(int *argc, char *argv[])
|
||||||
|
{
|
||||||
|
XrmInitialize();
|
||||||
|
XrmParseCommand(&commandlineDB, opTable, opTableEntries, "lcd4linux", argc, argv);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* initialize driver & display */
|
/* initialize driver & display */
|
||||||
int drv_X11_init(const char *section, const int quiet)
|
int drv_X11_init(const char *section, const int quiet)
|
||||||
{
|
{
|
||||||
|
|||||||
+15
@@ -91,6 +91,14 @@ static void usage(void)
|
|||||||
printf(" -F do not fork and detach (run in foreground)\n");
|
printf(" -F do not fork and detach (run in foreground)\n");
|
||||||
printf(" -o <output-file> write picture to file (raster driver only)\n");
|
printf(" -o <output-file> write picture to file (raster driver only)\n");
|
||||||
printf(" -q suppress startup and exit splash screen\n");
|
printf(" -q suppress startup and exit splash screen\n");
|
||||||
|
#ifdef WITH_X11
|
||||||
|
printf("special X11 options:\n");
|
||||||
|
printf(" -display <X11 display name> preceeds X connection given in $DISPLAY\n");
|
||||||
|
printf(" -synchronous use synchronized communication with X server (for debugging)\n");
|
||||||
|
printf("\n");
|
||||||
|
printf("\n");
|
||||||
|
printf("\n");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void interactive_mode(void)
|
static void interactive_mode(void)
|
||||||
@@ -222,6 +230,13 @@ int main(int argc, char *argv[])
|
|||||||
running_foreground = 0;
|
running_foreground = 0;
|
||||||
running_background = 0;
|
running_background = 0;
|
||||||
|
|
||||||
|
#ifdef WITH_X11
|
||||||
|
drv_X11_parseArgs(&argc, argv);
|
||||||
|
if (argc != thread_argc) {
|
||||||
|
/* info() will not work here because verbose level is not known */
|
||||||
|
printf("recognized special X11 parameters\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
while ((c = getopt(argc, argv, "c:Ff:hilo:qvp:")) != EOF) {
|
while ((c = getopt(argc, argv, "c:Ff:hilo:qvp:")) != EOF) {
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
#define SVN_VERSION "1048"
|
#define SVN_VERSION "1066M"
|
||||||
|
|||||||
Reference in New Issue
Block a user