Applied wmMatrix-0.2-debian-fixes.patch

This commit is contained in:
Alexey I. Froloff 2012-08-14 17:04:16 +04:00 committed by Carlos R. Mafra
parent faedc9bd18
commit 75fced152e
2 changed files with 40 additions and 162 deletions

View file

@ -1,12 +1,12 @@
/* /*
* *
* wmMatrix-0.2 (C) 1999 Mike Henderson (mghenderson@lanl.gov) * wmMatrix-0.2 (C) 1999 Mike Henderson (mghenderson@lanl.gov)
* *
* - A DockApp version of Jamie Zawinski's xmatrix screensaver hack. * - A DockApp version of Jamie Zawinski's xmatrix screensaver hack.
* *
* *
* *
* *
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -39,11 +39,8 @@
*/ */
/*
* Includes
/*
* Includes
*/ */
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
@ -58,18 +55,13 @@
#include "matrix.h" #include "matrix.h"
/*
/* * Delay between refreshes (in microseconds)
* Delay between refreshes (in microseconds)
*/ */
#define DELAY 10000UL #define DELAY 10000UL
#define WMMATRIX_VERSION "0.2" #define WMMATRIX_VERSION "0.2"
void ParseCMDLine(int argc, char *argv[]); void ParseCMDLine(int argc, char *argv[]);
void ButtonPressEvent(XButtonEvent *); void ButtonPressEvent(XButtonEvent *);
void print_usage(); void print_usage();
@ -77,64 +69,43 @@ m_state *init_matrix( Display *, Window );
void draw_matrix( m_state *, int ); void draw_matrix( m_state *, int );
int GotFirstClick1, GotDoubleClick1; int GotFirstClick1, GotDoubleClick1;
int GotFirstClick2, GotDoubleClick2; int GotFirstClick2, GotDoubleClick2;
int GotFirstClick3, GotDoubleClick3; int GotFirstClick3, GotDoubleClick3;
int DblClkDelay; int DblClkDelay;
int HasExecute; /*int HasExecute;*/
char ExecuteCommand[1024]; char* ExecuteCommand = "xmatrixsmall";
char *progname = "wmMatrix"; char *progname = "wmMatrix";
char *progclass = "WMMatrix"; char *progclass = "WMMatrix";
int PixmapSize; int PixmapSize;
char *DoubleClickCmd = NULL;
char* TimeColor = "#ffff00";
char* BackgroundColor = "#181818";
/*
* main
char TimeColor[30] = "#ffff00";
char BackgroundColor[30] = "#181818";
/*
* main
*/ */
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
XEvent event; XEvent event;
int n, k, m; int n, k, m;
float avg1, user; /* float avg1;*/
/*char Command[512];*/ /*char Command[512];*/
m_state *state; m_state *state;
FILE *fp; /* FILE *fp;*/
/* /*
* Parse any command line arguments. * Parse any command line arguments.
*/ */
ParseCMDLine(argc, argv); ParseCMDLine(argc, argv);
if(DoubleClickCmd==NULL)
DoubleClickCmd=strdup("xscreensaver-demo");
strcpy(ExecuteCommand, "xmatrixsmall"); /*HasExecute = 1;*/
HasExecute = 1;
initXwindow(argc, argv); initXwindow(argc, argv);
openXwindow(argc, argv, wmMatrix_master, wmMatrix_mask_bits, wmMatrix_mask_width, wmMatrix_mask_height); openXwindow(argc, argv, wmMatrix_master, wmMatrix_mask_bits, wmMatrix_mask_width, wmMatrix_mask_height);
state = init_matrix( display, iconwin ); state = init_matrix( display, iconwin );
/* /*
if (HasExecute){ if (HasExecute){
sprintf(Command, "%s -window-id 0x%x &", ExecuteCommand, (int)iconwin); sprintf(Command, "%s -window-id 0x%x &", ExecuteCommand, (int)iconwin);
@ -142,82 +113,53 @@ int main(int argc, char *argv[]) {
} }
*/ */
/* /*
* Loop until we die * Loop until we die
*/ */
n = k = m = 32000; n = k = m = 32000;
while(1) { while(1) {
#if 0 #if 0
if ( n>10 ){ if ( n>10 ){
n = 0; n = 0;
if ( (fp = fopen("/proc/loadavg", "r")) != NULL ){ if ( (fp = fopen("/proc/loadavg", "r")) != NULL ){
fscanf(fp, "%f", &avg1); avg1 *= 10.0; fclose(fp); fscanf(fp, "%f", &avg1); avg1 *= 10.0; fclose(fp);
m = (int)(40.0 - 1.00*avg1 + 0.5); m = (int)(40.0 - 1.00*avg1 + 0.5);
if (m < 0) m = 0; if (m < 0) m = 0;
} else { } else {
printf("problem opening /proc/loadavg file for read\n"); printf("problem opening /proc/loadavg file for read\n");
exit(-1); exit(-1);
} }
} else { } else {
/* /*
* Update the counter. * Update the counter.
*/ */
++n; ++n;
} }
#endif #endif
m=0;
m=0;
if (k > m){ if (k > m){
k = 0; k = 0;
draw_matrix( state, 40 ); draw_matrix( state, 40 );
} else { } else {
++k; ++k;
} }
/* /*
* Double Click Delays * Double Click Delays
* Keep track of click events. If Delay too long, set GotFirstClick's to False. * Keep track of click events. If Delay too long, set GotFirstClick's to False.
*/ */
if (DblClkDelay > 150) { if (DblClkDelay > 150) {
DblClkDelay = 0; DblClkDelay = 0;
GotFirstClick1 = 0; GotDoubleClick1 = 0; GotFirstClick1 = 0; GotDoubleClick1 = 0;
GotFirstClick2 = 0; GotDoubleClick2 = 0; GotFirstClick2 = 0; GotDoubleClick2 = 0;
GotFirstClick3 = 0; GotDoubleClick3 = 0; GotFirstClick3 = 0; GotDoubleClick3 = 0;
} else { } else {
++DblClkDelay; ++DblClkDelay;
} }
/*
/*
* Process any pending X events. * Process any pending X events.
*/ */
while(XPending(display)){ while(XPending(display)){
@ -235,116 +177,59 @@ m=0;
} }
/*
/*
* sleep till next update. I cant seem to get usleep or select to work properly * sleep till next update. I cant seem to get usleep or select to work properly
* with args smaller than 10000. A kernel tick problem? If I comment out the next line, * with args smaller than 10000. A kernel tick problem? If I comment out the next line,
* the app screams (chews up cpu too). Or if I use DELAY of 0 it also screams. * the app screams (chews up cpu too). Or if I use DELAY of 0 it also screams.
* But a delay of 1 or higher is slow..... * But a delay of 1 or higher is slow.....
* *
*/ */
short_uusleep(DELAY); short_uusleep(DELAY);
} }
} }
/*
* ParseCMDLine()
/*
* ParseCMDLine()
*/ */
void ParseCMDLine(int argc, char *argv[]) { void ParseCMDLine(int argc, char *argv[]) {
int i;
int i;
PixmapSize = 2; PixmapSize = 2;
for (i = 1; i < argc; i++) { for (i = 1; i < argc; i++) {
if (!strcmp(argv[i], "-display")){
if (!strcmp(argv[i], "-display")){
++i; ++i;
} else if (!strcmp(argv[i], "-c")){
} else if (!strcmp(argv[i], "-tc")){
if ((i+1 >= argc)||(argv[i+1][0] == '-')) {
fprintf(stderr, "wmMatrix: No color found\n");
print_usage();
exit(-1);
}
strcpy(TimeColor, argv[++i]);
} else if (!strcmp(argv[i], "-bc")){
if ((i+1 >= argc)||(argv[i+1][0] == '-')) {
fprintf(stderr, "wmMatrix: No color found\n");
print_usage();
exit(-1);
}
strcpy(BackgroundColor, argv[++i]);
} else if (!strcmp(argv[i], "-e")){
if ((i+1 >= argc)||(argv[i+1][0] == '-')) { if ((i+1 >= argc)||(argv[i+1][0] == '-')) {
fprintf(stderr, "wmMatrix: No command given\n"); fprintf(stderr, "wmMatrix: No command given\n");
print_usage(); print_usage();
exit(-1); exit(-1);
} }
strcpy(ExecuteCommand, argv[++i]); if(DoubleClickCmd!=NULL)
HasExecute = 1; free(DoubleClickCmd);
DoubleClickCmd=strdup(argv[++i]);
} else if (!strcmp(argv[i], "-sml")){ } else if (!strcmp(argv[i], "-sml")){
PixmapSize = 1; PixmapSize = 1;
} else if (!strcmp(argv[i], "-med")){ } else if (!strcmp(argv[i], "-med")){
PixmapSize = 2; PixmapSize = 2;
} else if (!strcmp(argv[i], "-lrg")){ } else if (!strcmp(argv[i], "-lrg")){
PixmapSize = 3; PixmapSize = 3;
} else { } else {
print_usage(); print_usage();
exit(1); exit(1);
} }
} }
} }
void print_usage(){ void print_usage() {
printf("\nwmMatrix version: %s\n", WMMATRIX_VERSION); printf("\nwmMatrix version: %s\n", WMMATRIX_VERSION);
printf("\t-h\t\tDisplay help screen.\n"); printf("\t-h\t\tDisplay help screen.\n");
printf("\t-sml\t\tUse small size pixmap.\n"); printf("\t-sml\t\tUse small size pixmap.\n");
printf("\t-med\t\tUse medium size pixmap.\n"); printf("\t-med\t\tUse medium size pixmap.\n");
printf("\t-lrg\t\tUse large size pixmap.\n"); printf("\t-lrg\t\tUse large size pixmap.\n");
} }
/* /*
* This routine handles button presses. * This routine handles button presses.
* *
@ -356,9 +241,6 @@ void print_usage(){
* *
*/ */
void ButtonPressEvent(XButtonEvent *xev){ void ButtonPressEvent(XButtonEvent *xev){
DblClkDelay = 0; DblClkDelay = 0;
if ((xev->button == Button1) && (xev->type == ButtonPress)){ if ((xev->button == Button1) && (xev->type == ButtonPress)){
if (GotFirstClick1) GotDoubleClick1 = 1; if (GotFirstClick1) GotDoubleClick1 = 1;
@ -378,12 +260,12 @@ void ButtonPressEvent(XButtonEvent *xev){
if (GotDoubleClick1) { if (GotDoubleClick1) {
GotFirstClick1 = 0; GotFirstClick1 = 0;
GotDoubleClick1 = 0; GotDoubleClick1 = 0;
system("xscreensaver-demo"); system(DoubleClickCmd);
} }
/* /*
* We got a double click on Mouse Button2 (i.e. the left one) * We got a double click on Mouse Button2 (i.e. the middle one)
*/ */
if (GotDoubleClick2) { if (GotDoubleClick2) {
GotFirstClick2 = 0; GotFirstClick2 = 0;
@ -392,16 +274,11 @@ void ButtonPressEvent(XButtonEvent *xev){
/* /*
* We got a double click on Mouse Button3 (i.e. the left one) * We got a double click on Mouse Button3 (i.e. the right one)
*/ */
if (GotDoubleClick3) { if (GotDoubleClick3) {
GotFirstClick3 = 0; GotFirstClick3 = 0;
GotDoubleClick3 = 0; GotDoubleClick3 = 0;
} }
return; return;
} }

View file

@ -43,7 +43,8 @@ void setMaskXY(int, int);
unsigned long getColor(char *, float, int *, int *, int *); unsigned long getColor(char *, float, int *, int *, int *);
unsigned long getBlendedColor(char *, float, int, int, int); unsigned long getBlendedColor(char *, float, int, int, int);
void RedrawWindow(void); void RedrawWindow(void);
void wusleep( unsigned int ); void uusleep( unsigned long );
void short_uusleep( unsigned long );