Big Endian Fixes like mad. Other fixes - Alex
authorterminatorX <>
Wed, 11 Sep 2002 22:28:35 +0000 (22:28 +0000)
committerterminatorX <>
Wed, 11 Sep 2002 22:28:35 +0000 (22:28 +0000)
12 files changed:
ChangeLog
Makefile.am
configure.in
gnome-support/terminatorX.keys [deleted file]
src/tX_audiodevice.cc
src/tX_audiofile.cc
src/tX_audiofile.h
src/tX_endian.c
src/tX_endian.h
src/tX_engine.cc
src/tX_global.c
src/tX_mouse.cc

index 3774fbfc8d5d54cf4a2b36486439d3af99baea16..0204608f8820b629dec9fc78b2598fab046cec25 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -14,7 +14,8 @@ changed.
   WARNING: gdkxft-users: gtk2 applications segfault when preloading
   libgdk_xft.so! So unset LD_PRELOAD and set GDK_USE_XFT=1 instead.
 - Applied a patch from Adrian that brings lots of new stuff:
-  - Debian package support  
+  - Debian package support (removed - Mike Furr now maintains an official 
+                            Debain package for terminatorX)
   - enhanced GNOME integration
   - a manpage for terminatorX
 - Included another gcc3 fix thanks to Gregor Riepl <seto-kun@freesurf.ch>
index 8b7571b2c046470f587d7cef88db9339b2c55018..c157e6e2dcc6e13fd4f09ff5d4c5ea075c22a7ce 100644 (file)
@@ -1,5 +1,5 @@
 AUTOMAKE_OPTIONS = foreign 
-SUBDIRS = src gnome-support doc debian
+SUBDIRS = src gnome-support doc
 SOURCES = README.GNOME README.PERFORMANCE terminatorX.spec terminatorX.spec.in
 
 man_MANS = terminatorX.1
index e307ac2946853a4a688396f0d7193e0cfded8e2b..775b2ad647eca11beb12873c9c5876cd796fca73 100644 (file)
@@ -395,4 +395,4 @@ AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension,, AC_MSG_ERROR([** DGA not installe
 if test "$enable_dga2" = yes; then
        AC_CHECK_LIB(Xxf86dga, XDGASelectInput,, AC_MSG_ERROR([** DGA2 not installed. Try using dga1 instead. **]), $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS)
 fi
-AC_OUTPUT(Makefile src/Makefile gnome-support/Makefile gnome-support/terminatorX.keys src/gui_icons/Makefile src/smallknob/Makefile doc/Makefile doc/img/Makefile debian/Makefile terminatorX.spec terminatorX.1)
+AC_OUTPUT(Makefile src/Makefile gnome-support/Makefile gnome-support/terminatorX.keys src/gui_icons/Makefile src/smallknob/Makefile doc/Makefile doc/img/Makefile terminatorX.spec terminatorX.1)
diff --git a/gnome-support/terminatorX.keys b/gnome-support/terminatorX.keys
deleted file mode 100644 (file)
index 40091be..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-application/x-terminatorX:
-       open=terminatorX %f
-       view=terminatorX %f
-       edit=terminatorX %f
-       icon-filename=/usr/local/share/pixmaps/terminatorX-mime.xpm
index c4f8bdbd095d4b9918a95012687a0382b6d8bb6c..a180ea651060baae85dfa5c411bedb341a7a9d70 100644 (file)
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
-#include <unistd.h>
 #include <fcntl.h>
 #include <sys/soundcard.h>
 #include <config.h>
 
 #include "tX_endian.h"
 
+#define __USE_XOPEN // we need this for swab()
+#include <unistd.h>
+#undef __USE_XOPEN
+
 void tX_audiodevice :: init()
 {
        samples_per_buffer=0;
@@ -79,14 +82,6 @@ void tX_audiodevice :: play(int16_t* dummy)
 
 #ifdef USE_OSS
 
-/* this is required as open() overloads 
-   ansi open() - better solutions anybody? ;)
-*/
-inline int open_hack(char *name,  int flags, mode_t mode)
-{
-       return open(name, flags, mode);
-}
-
 int tX_audiodevice_oss :: open()
 {
        int i=0;
@@ -94,7 +89,7 @@ int tX_audiodevice_oss :: open()
        int buff_cfg;
 
        if (fd) return (1);
-        fd = open_hack(globals.audio_device, O_WRONLY, 0);
+        fd = ::open(globals.audio_device, O_WRONLY, 0);
        
        /* setting buffer size */       
        buff_cfg=(globals.buff_no<<16) | globals.buff_size;
@@ -135,11 +130,6 @@ int tX_audiodevice_oss :: open()
         return(i);     
 }
 
-inline int closewrapper(int fd)
-{
-       return close(fd);
-}
-
 int tX_audiodevice_oss :: close()
 {
        void *dummy;
@@ -148,7 +138,7 @@ int tX_audiodevice_oss :: close()
        {       
                return(1);              
        }
-       closewrapper(fd);
+       ::close(fd);
        fd=0;
        blocksize=0;
                
index 965ea5f1b9ba270524067ca8641dd5f5c1b6d73f..3f07f57a330eb946b5308c8b15d50aec49c89c1b 100644 (file)
@@ -181,9 +181,6 @@ int tx_audiofile :: load_piped()
        {       
                bytes = fread(w->buffer, 1, SOX_BLOCKSIZE, file);
                w->used=bytes;
-/*#ifdef BIG_ENDIAN_MACHINE
-               swapbuffer((int16_t *) w->buffer, bytes/sizeof(int16_t));
-#endif*/
                
                if (bytes)
                {
@@ -269,7 +266,7 @@ int tx_audiofile :: load_mpg123()
        
        if (!file) return TX_AUDIO_ERR_MPG123;
        
-       return load_piped();    
+       return load_piped();
 }
 #endif 
 
@@ -349,7 +346,7 @@ int tx_audiofile :: load_wav()
                bytes = fread(p, 1, min(1024, wav_in.len-allbytes), wav_in.handle);
 
 #ifdef ENABLE_DEBUG_OUTPUT
-               if (output) { tX_debug("tX_audiofile::load_wav() read %i Bytes [%02x %02x %02x %02x %02x %02x ..]", bytes, (unsigned int) debug_p[0],  (unsigned int) debug_p[1], (unsigned int) debug_p[2], (unsigned int) debug_p[3], (unsigned int) debug_p[4], (unsigned int) debug_p[5]); }
+               if (output) { tX_debug("tX_audiofile::load_wav() read %i Bytes [%04x %04x %04x %04x %04x %04x ..]", bytes, (unsigned int) p[0],  (unsigned int) p[1], (unsigned int) p[2], (unsigned int) p[3], (unsigned int) p[4], (unsigned int) p[5]); }
 #endif
 
                if (bytes<=0) {
@@ -360,7 +357,8 @@ int tx_audiofile :: load_wav()
 #ifdef BIG_ENDIAN_MACHINE
                swapbuffer(p, bytes/sizeof(int16_t));
 #      ifdef ENABLE_DEBUG_OUTPUT
-               if (output) { tX_debug("tX_audiofile::load_wav() swapped %i Bytes [%02x %02x %02x %02x %02x %02x ..]", bytes, (unsigned int) debug_p[0],  (unsigned int) debug_p[1], (unsigned int) debug_p[2], (unsigned int) debug_p[3], (unsigned int) debug_p[4], (unsigned int) debug_p[5]); }
+               if (output) { tX_debug("tX_audiofile::load_wav() swapped %i Bytes [%04x %04x %04x %04x %04x %04x ..]",
+               bytes, (unsigned int) p[0],  (unsigned int) p[1], (unsigned int) p[2], (unsigned int) p[3], (unsigned int) p[4], (unsigned int) p[5]); }
 #      endif
 #endif         
 
index 8af7903dc968683bc61f988f593d4641531c402d..516feccfd912536ab36140dde9efbc74beae7988 100644 (file)
 #include <config.h>
 #endif
 
+#include <tX_endian.h>
+
 #ifdef USE_SOX_INPUT
 #define SOX_STR "sox \"%s\" -t raw -c 1 -r 44100 -s -w -"
 #endif
 
 #ifdef USE_MPG123_INPUT
-#define MPG123_STR "mpg123 -qs \"%s\" | sox -t raw -s -w -r 44100 -c 2 - -t raw -c 1 -r 44100 -s -w -"
 /* The Original MPG123_STR - probably slightly faster than the one above but
 but mpg321 doesn't support -m yet.
 #define MPG123_STR "mpg123 -qms \"%s\""
 */
+
+#ifdef BIG_ENDIAN_MACHINE
+/* This works with mpg321 only... */
+#define MPG123_STR "mpg123 -qs \"%s\" | sox -x -t raw -s -w -r 44100 -c 2 - -t raw -c 1 -r 44100 -s -w -"
+#else
+#define MPG123_STR "mpg123 -qs \"%s\" | sox -t raw -s -w -r 44100 -c 2 - -t raw -c 1 -r 44100 -s -w -"
+#endif
 #endif
 
 #ifdef USE_OGG123_INPUT
index 2b617b40a77a900cf1ecc6b3175a14c543498b95..a51e964c17d21bd5d758ae14aeab5dcf4e0ca6c6 100644 (file)
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  
-    File: endian.c
+    File: tX_endian.c
  
     Description: swap byte order for big endian systems/audiohardware.
 */    
 
-
 #include "tX_endian.h"
+#include "tX_global.h"
 
 #ifdef WORDS_BIGENDIAN
 
-void swap16(int16_t * val)
-{
+void swap16(int16_t * val) {
        int8_t temp;
        int8_t *p;
        
        p=(int8_t *) val;
-       temp=*p;
-       *p=*++p;
-       *p=temp;
+       temp=p[0];
+       p[0]=p[1];
+       p[1]=temp;
 }
 
-void swap32(int32_t * val)
-{
-       /*
-               This one is very inefficient but it wont be
-               called from performace critical areas so
-               who cares...
-       */
+void swap32(int32_t * val) {
        int8_t temp;
        int8_t *p;
        
@@ -57,72 +50,4 @@ void swap32(int32_t * val)
        p[2]=temp;
 }
 
-void swapbuffer(int16_t *buffer, int samples)
-{
-       int i;
-       int8_t temp;
-       int8_t *p;
-       int16_t *val;
-       
-       val=buffer;
-
-       for (i=0; i<samples; i++)
-       {
-               p=(int8_t *) val;               
-               temp=*p;
-               *p=*++p;
-               *p=temp;                
-               val++;
-       }
-}
-
-
-/* The following main() is just for testing */
-
-#ifdef TEST_ENDIAN
-
-#include <netinet/in.h>
-
-int main(int argc, char **argv)
-{
-       int16_t t16=0x1234;
-       int32_t t32=0x12345678;
-       
-       int16_t buffer[8]={0x1234, 0x5678, 0x9ABC, 0xDEF0, 10, 20, 30, 0};
-
-       int i;
-       
-       printf("16: %4x\n", (int) t16);
-       swap16(&t16);
-       printf("16: %4x\n", (int) t16);
-       swap16(&t16);
-       printf("16: %4x\n", (int) t16);
-       t16=htons(t16);
-       printf("16: %4x\n", (int) t16);
-       t16=htons(t16);
-       printf("16: %4x\n", (int) t16);
-
-       printf("32: %8x\n", (int) t32);
-       swap32(&t32);
-       printf("32: %8x\n", (int) t32);
-       swap32(&t32);
-       printf("32: %8x\n", (int) t32);
-       t32=htonl(t32);
-       printf("32: %8x\n", (int) t32);
-       t32=htonl(t32);
-       printf("32: %8x\n", (int) t32);
-       
-       printf("buf: ");
-       for (i=0; i<8; i++) printf("%4hx ", buffer[i]); 
-       swapbuffer(buffer, 8);
-       printf("\nbuf: ");      
-       for (i=0; i<8; i++) printf("%4hx ",  buffer[i]);
-       swapbuffer(buffer, 8);
-       printf("\nbuf: ");      
-       for (i=0; i<8; i++) printf("%4hx ", buffer[i]);
-       
-       puts("\nDone.\n");
-}
-#endif
-
 #endif
index fc5dd69d570701c1a70be7a66d260bbfef0fcc43..122c944a3a7d8ae36eb7865956ae960c24896e87 100644 (file)
                 include <bits/endian.h>
 */    
 
+#ifndef _H_TX_ENDIAN_
+#define _H_TX_ENDIAN_
+
 #ifdef HAVE_CONFIG_H
-#include <config.h>
-#ifdef WORDS_BIGENDIAN
-#define BIG_ENDIAN_MACHINE 1
-#else
-#undef BIG_ENDIAN_MACHINE
-#endif
+#      include <config.h>
+#      ifdef WORDS_BIGENDIAN
+#              define BIG_ENDIAN_MACHINE 1
+#      else
+#              undef BIG_ENDIAN_MACHINE
+#      endif
 #endif
 
 #ifdef WORDS_BIGENDIAN
 
-#include "tX_types.h"
+#      include "tX_types.h"
+
+#define __USE_XOPEN // we need this for swab()
+#      include <unistd.h>
+#undef __USE_XOPEN
 
-#ifdef __cplusplus
+#define swapbuffer(b, s) swab((void *) b, (void *) b, (ssize_t) s<<1)
+
+#      ifdef __cplusplus
 extern "C" {
-#endif /* __cplusplus */
+#      endif /* __cplusplus */
 
 extern void swap16(int16_t * val);
 extern void swap32(int32_t * val);
-extern void swapbuffer(int16_t *buffer, int samples);
-#ifdef __cplusplus
+       
+#      ifdef __cplusplus
 }
-#endif /* __cplusplus */
+#      endif /* __cplusplus */
 
-#endif
+#endif /* WORDS_BIGENDIAN */
+
+#endif /* _H_TX_ENDIAN_ */
index 4441d0c2ad0d9ad1bce5a9d5f0c20626f8ef9cfc..6379df448a1022fce047acd6a9ba8ad44f93fdce 100644 (file)
@@ -262,6 +262,8 @@ tX_engine_error tX_engine :: run() {
        stop_flag=false;
        /* Trigger the engine thread... */
        pthread_mutex_unlock(&start);
+       
+       return NO_ERROR;
 }
 
 void tX_engine :: stop() {
index 9a04124cfe445805de27ed00c2fe464dd96aefa9..515a4bd6fb1be96719855d77df222e95b3e7e8a8 100644 (file)
@@ -178,9 +178,9 @@ void load_globals() {
        }
 }
 
-#define restore_int(s, i); if ((!elementFound) && (!xmlStrcmp(cur->name, (const xmlChar *) s)) && (xmlNodeListGetString(doc, cur->xmlChildrenNode, 1))) {sscanf(xmlNodeListGetString(doc, cur->xmlChildrenNode, 1), "%i", &i); elementFound=1;}
-#define restore_float(s, i); if ((!elementFound) && (!xmlStrcmp(cur->name, (const xmlChar *) s)) && (xmlNodeListGetString(doc, cur->xmlChildrenNode, 1))) {sscanf(xmlNodeListGetString(doc, cur->xmlChildrenNode, 1), "%lf", &dvalue); i=dvalue; elementFound=1;}
-#define restore_string(s, i); if ((!elementFound) && (!xmlStrcmp(cur->name, (const xmlChar *) s)) && (xmlNodeListGetString(doc, cur->xmlChildrenNode, 1))) {strcpy(i, xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)); elementFound=1;}
+#define restore_int(s, i); if ((!elementFound) && (!xmlStrcmp(cur->name, (const xmlChar *) s))) { elementFound=1; if (xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)) { sscanf(xmlNodeListGetString(doc, cur->xmlChildrenNode, 1), "%i", &i); }}
+#define restore_float(s, i); if ((!elementFound) && (!xmlStrcmp(cur->name, (const xmlChar *) s))) { elementFound=1; if  (xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)) {sscanf(xmlNodeListGetString(doc, cur->xmlChildrenNode, 1), "%lf", &dvalue); i=dvalue;}}
+#define restore_string(s, i); if ((!elementFound) && (!xmlStrcmp(cur->name, (const xmlChar *) s))) { elementFound=1; if (xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)) {strcpy(i, xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)); }}
 
 int load_globals_xml() {
        char rc_name[PATH_MAX]="";      
index ed785e765837a3905c2468373b4452c4b643d354..353f68f67807d74506bd8289cb922d6baed92fbd 100644 (file)
  
     Description: This implements the mouse AND keyboard Input handling in
                 Grab-Mode.
-*/    
+*/
 
+#include <sys/wait.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/xf86dga.h>
 
 #include "tX_mouse.h"
 #include "tX_mastergui.h"
 #include "tX_global.h"
 #include "tX_engine.h"
 #include "tX_vtt.h"
-#include <sys/wait.h>
-#include <X11/extensions/xf86dga.h>
 
 #define TX_MOUSE_SPEED_NORMAL 0.05
 #define TX_MOUSE_SPEED_WARP 250000
@@ -61,7 +62,7 @@ int tx_mouse :: grab()
 
        if (grabbed) return(0);
 
-       dpy=XOpenDisplay(NULL); // FIXME: use correct display
+       dpy=XOpenDisplay(NULL);
        if (!dpy)
        {
                fputs("GrabMode Error: couldn't connect to XDisplay.", stderr);