mirror of
https://github.com/fltk/fltk.git
synced 2026-05-26 10:07:06 +08:00
Create Fl_X11_System_Driver.{cxx,.H} and share Fl_Posix_System_Driver.{cxx,.H} between Darwin and USE_X11 platforms.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11583 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
@@ -80,7 +80,7 @@ public:
|
||||
// implement these to support cross-platform file operations
|
||||
virtual char *utf2mbcs(const char *s) {return (char*)s;}
|
||||
virtual char *getenv(const char* v);
|
||||
virtual int putenv(char* v) {return ::putenv(v);}
|
||||
virtual int putenv(char* v) {return -1;}
|
||||
virtual int open(const char* f, int oflags, int pmode) {return -1;}
|
||||
virtual FILE *fopen(const char* f, const char *mode) {return NULL;}
|
||||
virtual int system(const char* cmd) {return -1;}
|
||||
|
||||
@@ -172,6 +172,7 @@ if (USE_X11)
|
||||
drivers/Posix/Fl_Posix_Printer_Driver.cxx
|
||||
drivers/X11/Fl_X11_Screen_Driver.cxx
|
||||
drivers/X11/Fl_X11_Window_Driver.cxx
|
||||
drivers/X11/Fl_X11_System_Driver.cxx
|
||||
drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx
|
||||
drivers/Xlib/Fl_Xlib_Graphics_Driver_arci.cxx
|
||||
drivers/Xlib/Fl_Xlib_Graphics_Driver_color.cxx
|
||||
@@ -201,6 +202,7 @@ if (USE_X11)
|
||||
drivers/Posix/Fl_Posix_System_Driver.H
|
||||
drivers/X11/Fl_X11_Screen_Driver.H
|
||||
drivers/X11/Fl_X11_Window_Driver.H
|
||||
drivers/X11/Fl_X11_System_Driver.H
|
||||
drivers/Xlib/Fl_Font.H
|
||||
)
|
||||
|
||||
@@ -251,10 +253,12 @@ elseif (APPLE)
|
||||
drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx
|
||||
drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
|
||||
drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx
|
||||
drivers/Posix/Fl_Posix_System_Driver.cxx
|
||||
drivers/Darwin/Fl_Darwin_System_Driver.cxx
|
||||
Fl_get_key_mac.cxx
|
||||
)
|
||||
set (DRIVER_HEADER_FILES
|
||||
drivers/Posix/Fl_Posix_System_Driver.H
|
||||
drivers/Darwin/Fl_Darwin_System_Driver.H
|
||||
drivers/Cocoa/Fl_Cocoa_Screen_Driver.H
|
||||
drivers/Cocoa/Fl_Cocoa_Window_Driver.H
|
||||
|
||||
+3
-3
@@ -21,12 +21,12 @@
|
||||
// and looks it up in the X key bit vector, which Fl_x.cxx keeps track of.
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include "drivers/Posix/Fl_Posix_System_Driver.H"
|
||||
#include "drivers/X11/Fl_X11_System_Driver.H"
|
||||
#include <FL/x.H> // for fl_display
|
||||
|
||||
extern char fl_key_vector[32]; // in Fl_x.cxx
|
||||
|
||||
int Fl_Posix_System_Driver::event_key(int k) {
|
||||
int Fl_X11_System_Driver::event_key(int k) {
|
||||
if (k > FL_Button && k <= FL_Button+8)
|
||||
return Fl::event_state(8<<(k-FL_Button));
|
||||
int i;
|
||||
@@ -42,7 +42,7 @@ int Fl_Posix_System_Driver::event_key(int k) {
|
||||
return fl_key_vector[i/8] & (1 << (i%8));
|
||||
}
|
||||
|
||||
int Fl_Posix_System_Driver::get_key(int k) {
|
||||
int Fl_X11_System_Driver::get_key(int k) {
|
||||
fl_open_display();
|
||||
XQueryKeymap(fl_display, fl_key_vector);
|
||||
return event_key(k);
|
||||
|
||||
+13
-55
@@ -21,9 +21,7 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#if defined(FL_CFG_GFX_QUARTZ)
|
||||
#include "drivers/Darwin/Fl_Darwin_System_Driver.H"
|
||||
#elif defined(FL_CFG_GFX_XLIB)
|
||||
#if defined(FL_CFG_SYS_POSIX)
|
||||
#include "drivers/Posix/Fl_Posix_System_Driver.H"
|
||||
#elif defined(FL_CFG_SYS_WIN32)
|
||||
#include "drivers/WinAPI/Fl_WinAPI_System_Driver.H"
|
||||
@@ -261,6 +259,9 @@ void Fl_WinAPI_System_Driver::awake(void* msg) {
|
||||
}
|
||||
#endif // FL_CFG_SYS_WIN32
|
||||
|
||||
|
||||
#if defined(FL_CFG_SYS_POSIX)
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// POSIX threading...
|
||||
#if defined(HAVE_PTHREAD)
|
||||
@@ -314,12 +315,12 @@ static void unlock_function_rec() {
|
||||
}
|
||||
# endif // PTHREAD_MUTEX_RECURSIVE
|
||||
|
||||
static void posix_awake(void* msg) {
|
||||
void Fl_Posix_System_Driver::awake(void* msg) {
|
||||
if (write(thread_filedes[1], &msg, sizeof(void*))==0) { /* ignore */ }
|
||||
}
|
||||
|
||||
static void* thread_message_;
|
||||
static void* posix_thread_message() {
|
||||
void* Fl_Posix_System_Driver::thread_message() {
|
||||
void* r = thread_message_;
|
||||
thread_message_ = 0;
|
||||
return r;
|
||||
@@ -340,7 +341,7 @@ static void thread_awake_cb(int fd, void*) {
|
||||
extern void (*fl_lock_function)();
|
||||
extern void (*fl_unlock_function)();
|
||||
|
||||
static int posix_lock() {
|
||||
int Fl_Posix_System_Driver::lock() {
|
||||
if (!thread_filedes[1]) {
|
||||
// Initialize thread communication pipe to let threads awake FLTK
|
||||
// from Fl::wait()
|
||||
@@ -378,7 +379,7 @@ static int posix_lock() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void posix_unlock() {
|
||||
void Fl_Posix_System_Driver::unlock() {
|
||||
fl_unlock_function();
|
||||
}
|
||||
|
||||
@@ -399,58 +400,15 @@ void lock_ring() {
|
||||
|
||||
#else
|
||||
|
||||
#if defined(FL_CFG_GFX_QUARTZ) || defined(FL_CFG_GFX_XLIB)
|
||||
static void posix_awake(void*) {}
|
||||
static int posix_lock() { return 1; }
|
||||
static void posix_unlock() {}
|
||||
static void* posix_thread_message() { return NULL; }
|
||||
#endif
|
||||
static void Fl_Posix_System_Driver::awake(void*) {}
|
||||
static int Fl_Posix_System_Driver::lock() { return 1; }
|
||||
static void Fl_Posix_System_Driver::unlock() {}
|
||||
static void* Fl_Posix_System_Driver::thread_message() { return NULL; }
|
||||
|
||||
#endif // HAVE_PTHREAD
|
||||
|
||||
#if defined(FL_CFG_GFX_QUARTZ)
|
||||
void Fl_Darwin_System_Driver::awake(void *v)
|
||||
{
|
||||
posix_awake(v);
|
||||
}
|
||||
|
||||
int Fl_Darwin_System_Driver::lock()
|
||||
{
|
||||
return posix_lock();
|
||||
}
|
||||
|
||||
void Fl_Darwin_System_Driver::unlock()
|
||||
{
|
||||
posix_unlock();
|
||||
}
|
||||
|
||||
void* Fl_Darwin_System_Driver::thread_message()
|
||||
{
|
||||
return posix_thread_message();
|
||||
}
|
||||
#endif // FL_CFG_GFX_QUARTZ
|
||||
|
||||
#if defined(FL_CFG_GFX_XLIB)
|
||||
void Fl_Posix_System_Driver::awake(void *v)
|
||||
{
|
||||
posix_awake(v);
|
||||
}
|
||||
|
||||
int Fl_Posix_System_Driver::lock()
|
||||
{
|
||||
return posix_lock();
|
||||
}
|
||||
|
||||
void Fl_Posix_System_Driver::unlock()
|
||||
{
|
||||
posix_unlock();
|
||||
}
|
||||
|
||||
void* Fl_Posix_System_Driver::thread_message()
|
||||
{
|
||||
return posix_thread_message();
|
||||
}
|
||||
#endif // FL_CFG_GFX_XLIB
|
||||
#endif // FL_CFG_SYS_POSIX
|
||||
|
||||
|
||||
void Fl::awake(void *v) {
|
||||
|
||||
@@ -230,6 +230,7 @@ QUARTZCPPFILES = \
|
||||
drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx \
|
||||
drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx \
|
||||
drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx \
|
||||
drivers/Posix/Fl_Posix_System_Driver.cxx \
|
||||
drivers/Darwin/Fl_Darwin_System_Driver.cxx \
|
||||
Fl_get_key_mac.cxx
|
||||
|
||||
@@ -248,6 +249,7 @@ XLIBCPPFILES = \
|
||||
drivers/X11/Fl_X11_Window_Driver.cxx \
|
||||
drivers/X11/Fl_X11_Screen_Driver.cxx \
|
||||
drivers/Posix/Fl_Posix_System_Driver.cxx \
|
||||
drivers/X11/Fl_X11_System_Driver.cxx \
|
||||
drivers/Posix/Fl_Posix_Printer_Driver.cxx \
|
||||
Fl_x.cxx \
|
||||
fl_dnd_x.cxx \
|
||||
|
||||
@@ -25,11 +25,9 @@
|
||||
#ifndef FL_DARWIN_SYSTEM_DRIVER_H
|
||||
#define FL_DARWIN_SYSTEM_DRIVER_H
|
||||
|
||||
#include <FL/Fl_System_Driver.H>
|
||||
#include "../Posix/Fl_Posix_System_Driver.H"
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
/*
|
||||
Move everything here that manages the system interface.
|
||||
@@ -42,28 +40,12 @@
|
||||
- multithreading
|
||||
*/
|
||||
|
||||
class Fl_Darwin_System_Driver : public Fl_System_Driver
|
||||
class Fl_Darwin_System_Driver : public Fl_Posix_System_Driver
|
||||
{
|
||||
private:
|
||||
int run_program(const char *program, char **argv, char *msg, int msglen);
|
||||
public:
|
||||
Fl_Darwin_System_Driver();
|
||||
virtual int single_arg(const char *arg);
|
||||
virtual int arg_and_value(const char *name, const char *value);
|
||||
virtual int mkdir(const char* f, int mode) {return ::mkdir(f, mode);}
|
||||
virtual int open(const char* f, int oflags, int pmode) {
|
||||
return pmode == -1 ? ::open(f, oflags) : ::open(f, oflags, pmode);
|
||||
}
|
||||
virtual FILE *fopen(const char* f, const char *mode) {return ::fopen(f, mode);}
|
||||
virtual int system(const char* cmd) {return ::system(cmd);}
|
||||
virtual int execvp(const char *file, char *const *argv) {return ::execvp(file, argv);}
|
||||
virtual int chmod(const char* f, int mode) {return ::chmod(f, mode);}
|
||||
virtual int access(const char* f, int mode) { return ::access(f, mode);}
|
||||
virtual int stat(const char* f, struct stat *b) { return ::stat(f, b);}
|
||||
virtual char *getcwd(char* b, int l) {return ::getcwd(b, l);}
|
||||
virtual int unlink(const char* f) {return ::unlink(f);}
|
||||
virtual int rmdir(const char* f) {return ::rmdir(f);}
|
||||
virtual int rename(const char* f, const char *n) {return ::rename(f, n);}
|
||||
virtual int clocale_printf(FILE *output, const char *format, va_list args);
|
||||
static void *get_carbon_function(const char *name);
|
||||
static int calc_mac_os_version(); // computes the fl_mac_os_version global variable
|
||||
@@ -71,21 +53,12 @@ public:
|
||||
virtual int event_key(int k);
|
||||
virtual int get_key(int k);
|
||||
virtual int filename_list(const char *d, dirent ***list, int (*sort)(struct dirent **, struct dirent **) );
|
||||
virtual const char *getpwnam(const char *login);
|
||||
virtual int need_menu_handle_part2() {return 1;}
|
||||
virtual int open_uri(const char *uri, char *msg, int msglen);
|
||||
virtual int need_test_shortcut_extra() {return 1;}
|
||||
virtual int file_browser_load_filesystem(Fl_File_Browser *browser, char *filename, Fl_File_Icon *icon);
|
||||
virtual void newUUID(char *uuidBuffer);
|
||||
virtual char *preference_rootnode(Fl_Preferences *prefs, Fl_Preferences::Root root, const char *vendor,
|
||||
const char *application);
|
||||
virtual void *dlopen(const char *filename);
|
||||
// these 4 are implemented in Fl_lock.cxx
|
||||
virtual void awake(void*);
|
||||
virtual int lock();
|
||||
virtual void unlock();
|
||||
virtual void* thread_message();
|
||||
virtual int file_type(const char *filename);
|
||||
};
|
||||
|
||||
#endif // FL_DARWIN_SYSTEM_DRIVER_H
|
||||
|
||||
@@ -61,7 +61,7 @@ Fl_System_Driver *Fl_System_Driver::newSystemDriver()
|
||||
return new Fl_Darwin_System_Driver();
|
||||
}
|
||||
|
||||
Fl_Darwin_System_Driver::Fl_Darwin_System_Driver() {
|
||||
Fl_Darwin_System_Driver::Fl_Darwin_System_Driver() : Fl_Posix_System_Driver() {
|
||||
if (fl_mac_os_version == 0) fl_mac_os_version = calc_mac_os_version();
|
||||
}
|
||||
|
||||
@@ -146,12 +146,6 @@ int Fl_Darwin_System_Driver::filename_list(const char *d, dirent ***list, int (*
|
||||
}
|
||||
|
||||
|
||||
const char *Fl_Darwin_System_Driver::getpwnam(const char *login) {
|
||||
struct passwd *pwd;
|
||||
pwd = ::getpwnam(login);
|
||||
return pwd ? pwd->pw_dir : NULL;
|
||||
}
|
||||
|
||||
int Fl_Darwin_System_Driver::open_uri(const char *uri, char *msg, int msglen)
|
||||
{
|
||||
char *argv[3]; // Command-line arguments
|
||||
@@ -226,38 +220,6 @@ char *Fl_Darwin_System_Driver::preference_rootnode(Fl_Preferences *prefs, Fl_Pre
|
||||
return filename;
|
||||
}
|
||||
|
||||
void *Fl_Darwin_System_Driver::dlopen(const char *filename) {
|
||||
return ::dlopen(filename, RTLD_LAZY);
|
||||
}
|
||||
|
||||
int Fl_Darwin_System_Driver::file_type(const char *filename)
|
||||
{
|
||||
int filetype;
|
||||
struct stat fileinfo; // Information on file
|
||||
if (!::stat(filename, &fileinfo))
|
||||
{
|
||||
if (S_ISDIR(fileinfo.st_mode))
|
||||
filetype = Fl_File_Icon::DIRECTORY;
|
||||
# ifdef S_ISFIFO
|
||||
else if (S_ISFIFO(fileinfo.st_mode))
|
||||
filetype = Fl_File_Icon::FIFO;
|
||||
# endif // S_ISFIFO
|
||||
# if defined(S_ISCHR) && defined(S_ISBLK)
|
||||
else if (S_ISCHR(fileinfo.st_mode) || S_ISBLK(fileinfo.st_mode))
|
||||
filetype = Fl_File_Icon::DEVICE;
|
||||
# endif // S_ISCHR && S_ISBLK
|
||||
# ifdef S_ISLNK
|
||||
else if (S_ISLNK(fileinfo.st_mode))
|
||||
filetype = Fl_File_Icon::LINK;
|
||||
# endif // S_ISLNK
|
||||
else
|
||||
filetype = Fl_File_Icon::PLAIN;
|
||||
}
|
||||
else
|
||||
filetype = Fl_File_Icon::PLAIN;
|
||||
return filetype;
|
||||
}
|
||||
|
||||
//
|
||||
// End of "$Id$".
|
||||
//
|
||||
|
||||
@@ -44,15 +44,15 @@
|
||||
|
||||
class Fl_Posix_System_Driver : public Fl_System_Driver
|
||||
{
|
||||
private:
|
||||
protected:
|
||||
int run_program(const char *program, char **argv, char *msg, int msglen);
|
||||
public:
|
||||
virtual void display_arg(const char *arg);
|
||||
virtual int XParseGeometry(const char*, int*, int*, unsigned int*, unsigned int*);
|
||||
Fl_Posix_System_Driver() {}
|
||||
virtual int mkdir(const char* f, int mode) {return ::mkdir(f, mode);}
|
||||
virtual int open(const char* f, int oflags, int pmode) {
|
||||
return pmode == -1 ? ::open(f, oflags) : ::open(f, oflags, pmode);
|
||||
}
|
||||
virtual int putenv(char* v) {return ::putenv(v);}
|
||||
virtual FILE *fopen(const char* f, const char *mode) {return ::fopen(f, mode);}
|
||||
virtual int system(const char* cmd) {return ::system(cmd);}
|
||||
virtual int execvp(const char *file, char *const *argv) {return ::execvp(file, argv);}
|
||||
@@ -63,23 +63,8 @@ public:
|
||||
virtual int unlink(const char* f) {return ::unlink(f);}
|
||||
virtual int rmdir(const char* f) {return ::rmdir(f);}
|
||||
virtual int rename(const char* f, const char *n) {return ::rename(f, n);}
|
||||
virtual int clocale_printf(FILE *output, const char *format, va_list args);
|
||||
// these 2 are in Fl_get_key.cxx
|
||||
virtual int event_key(int k);
|
||||
virtual int get_key(int k);
|
||||
virtual int filename_list(const char *d, dirent ***list, int (*sort)(struct dirent **, struct dirent **) );
|
||||
virtual const char *getpwnam(const char *login);
|
||||
virtual int need_menu_handle_part2() {return 1;}
|
||||
virtual int need_menu_handle_part1_extra() {return 1;}
|
||||
virtual int open_uri(const char *uri, char *msg, int msglen);
|
||||
virtual int use_tooltip_timeout_condition() {return 1;}
|
||||
// this one is in fl_shortcut.cxx
|
||||
virtual const char *shortcut_add_key_name(unsigned key, char *p, char *buf, const char **);
|
||||
virtual int file_browser_load_filesystem(Fl_File_Browser *browser, char *filename, Fl_File_Icon *icon);
|
||||
virtual void newUUID(char *uuidBuffer);
|
||||
virtual char *preference_rootnode(Fl_Preferences *prefs, Fl_Preferences::Root root, const char *vendor,
|
||||
const char *application);
|
||||
virtual int preferences_need_protection_check() {return 1;}
|
||||
virtual void *dlopen(const char *filename);
|
||||
// these 4 are implemented in Fl_lock.cxx
|
||||
virtual void awake(void*);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,51 @@
|
||||
//
|
||||
// "$Id: quartz.H 11017 2016-01-20 21:40:12Z matt $"
|
||||
//
|
||||
// Definition of Posix system driver
|
||||
// for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
// Copyright 2010-2016 by Bill Spitzak and others.
|
||||
//
|
||||
// This library is free software. Distribution and use rights are outlined in
|
||||
// the file "COPYING" which should have been included with this file. If this
|
||||
// file is missing or damaged, see the license at:
|
||||
//
|
||||
// http://www.fltk.org/COPYING.php
|
||||
//
|
||||
// Please report all bugs and problems on the following page:
|
||||
//
|
||||
// http://www.fltk.org/str.php
|
||||
//
|
||||
|
||||
#ifndef FL_X11_SYSTEM_DRIVER_H
|
||||
#define FL_X11_SYSTEM_DRIVER_H
|
||||
|
||||
#include "../Posix/Fl_Posix_System_Driver.H"
|
||||
|
||||
class Fl_X11_System_Driver : public Fl_Posix_System_Driver {
|
||||
public:
|
||||
Fl_X11_System_Driver() : Fl_Posix_System_Driver() {}
|
||||
virtual void display_arg(const char *arg);
|
||||
virtual int XParseGeometry(const char*, int*, int*, unsigned int*, unsigned int*);
|
||||
virtual int clocale_printf(FILE *output, const char *format, va_list args);
|
||||
// these 2 are in Fl_get_key.cxx
|
||||
virtual int event_key(int k);
|
||||
virtual int get_key(int k);
|
||||
virtual int filename_list(const char *d, dirent ***list, int (*sort)(struct dirent **, struct dirent **) );
|
||||
virtual int need_menu_handle_part1_extra() {return 1;}
|
||||
virtual int open_uri(const char *uri, char *msg, int msglen);
|
||||
virtual int use_tooltip_timeout_condition() {return 1;}
|
||||
// this one is in fl_shortcut.cxx
|
||||
virtual const char *shortcut_add_key_name(unsigned key, char *p, char *buf, const char **);
|
||||
virtual int file_browser_load_filesystem(Fl_File_Browser *browser, char *filename, Fl_File_Icon *icon);
|
||||
virtual void newUUID(char *uuidBuffer);
|
||||
virtual char *preference_rootnode(Fl_Preferences *prefs, Fl_Preferences::Root root, const char *vendor,
|
||||
const char *application);
|
||||
virtual int preferences_need_protection_check() {return 1;}
|
||||
};
|
||||
|
||||
#endif /* FL_X11_SYSTEM_DRIVER_H */
|
||||
|
||||
//
|
||||
// End of "$Id: quartz.H 11017 2016-01-20 21:40:12Z matt $".
|
||||
//
|
||||
File diff suppressed because it is too large
Load Diff
+7
-25
@@ -27,7 +27,6 @@
|
||||
#include "config_lib.h"
|
||||
#include <FL/filename.H>
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_System_Driver.H>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "flstring.h"
|
||||
@@ -130,8 +129,9 @@ void fl_decode_uri(char *uri)
|
||||
/** @} */
|
||||
|
||||
|
||||
#if defined(FL_CFG_GFX_XLIB) || defined(FL_CFG_GFX_QUARTZ)
|
||||
#if defined(FL_CFG_SYS_POSIX)
|
||||
// code shared by the Mac OS and USE_X11 platforms
|
||||
# include "drivers/Posix/Fl_Posix_System_Driver.H"
|
||||
# include <unistd.h>
|
||||
# include <sys/wait.h>
|
||||
# include <signal.h>
|
||||
@@ -139,7 +139,7 @@ void fl_decode_uri(char *uri)
|
||||
# include <errno.h>
|
||||
|
||||
// Run the specified program, returning 1 on success and 0 on failure
|
||||
static int run_program(const char *program, char **argv, char *msg, int msglen) {
|
||||
int Fl_Posix_System_Driver::run_program(const char *program, char **argv, char *msg, int msglen) {
|
||||
pid_t pid; // Process ID of first child
|
||||
int status; // Exit status from first child
|
||||
sigset_t set, oldset; // Signal masks
|
||||
@@ -163,13 +163,13 @@ static int run_program(const char *program, char **argv, char *msg, int msglen)
|
||||
if (!fork()) {
|
||||
// Second child comes here, redirect stdin/out/err to /dev/null...
|
||||
close(0);
|
||||
open("/dev/null", O_RDONLY);
|
||||
::open("/dev/null", O_RDONLY);
|
||||
|
||||
close(1);
|
||||
open("/dev/null", O_WRONLY);
|
||||
::open("/dev/null", O_WRONLY);
|
||||
|
||||
close(2);
|
||||
open("/dev/null", O_WRONLY);
|
||||
::open("/dev/null", O_WRONLY);
|
||||
|
||||
// Detach from the current process group...
|
||||
setsid();
|
||||
@@ -210,26 +210,8 @@ static int run_program(const char *program, char **argv, char *msg, int msglen)
|
||||
// Return indicating success...
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
#endif // FL_CFG_SYS_POSIX
|
||||
|
||||
#if defined(FL_CFG_GFX_QUARTZ)
|
||||
|
||||
#include "drivers/Darwin/Fl_Darwin_System_Driver.H"
|
||||
|
||||
int Fl_Darwin_System_Driver::run_program(const char *program, char **argv, char *msg, int msglen)
|
||||
{
|
||||
return ::run_program(program, argv, msg, msglen);
|
||||
}
|
||||
|
||||
#elif defined(FL_CFG_GFX_XLIB)
|
||||
#include "drivers/Posix/Fl_Posix_System_Driver.H"
|
||||
|
||||
int Fl_Posix_System_Driver::run_program(const char *program, char **argv, char *msg, int msglen)
|
||||
{
|
||||
return ::run_program(program, argv, msg, msglen);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef TEST
|
||||
//
|
||||
|
||||
+2
-2
@@ -443,12 +443,12 @@ Fl_System_Driver::Keyname Fl_System_Driver::table[] = {
|
||||
#endif
|
||||
|
||||
#if defined(FL_CFG_GFX_XLIB)
|
||||
#include "drivers/Posix/Fl_Posix_System_Driver.H"
|
||||
#include "drivers/X11/Fl_X11_System_Driver.H"
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
Fl_System_Driver::Keyname Fl_System_Driver::table[] = {};
|
||||
|
||||
const char *Fl_Posix_System_Driver::shortcut_add_key_name(unsigned key, char *p, char *buf, const char **eom)
|
||||
const char *Fl_X11_System_Driver::shortcut_add_key_name(unsigned key, char *p, char *buf, const char **eom)
|
||||
{
|
||||
const char* q;
|
||||
if (key == FL_Enter || key == '\r') q="Enter"; // don't use Xlib's "Return":
|
||||
|
||||
Reference in New Issue
Block a user