fixed segfault
git-svn-id: http://tint2.googlecode.com/svn/trunk@168 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
parent
a62548bf29
commit
a17b62f76f
6 changed files with 32 additions and 25 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
2009-09-01
|
||||||
|
- fixed segfault
|
||||||
|
|
||||||
2009-08-30
|
2009-08-30
|
||||||
- detect pid of process owning the systray
|
- detect pid of process owning the systray
|
||||||
|
|
||||||
|
|
|
@ -348,7 +348,7 @@ void add_entry (char *key, char *value)
|
||||||
panel_config->battery.area.on_screen = 1;
|
panel_config->battery.area.on_screen = 1;
|
||||||
#else
|
#else
|
||||||
if(atoi(value) == 1)
|
if(atoi(value) == 1)
|
||||||
printf("tint2 is build without battery support\n");
|
fprintf(stderr, "tint2 is build without battery support\n");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (strcmp (key, "battery_low_status") == 0) {
|
else if (strcmp (key, "battery_low_status") == 0) {
|
||||||
|
|
|
@ -193,15 +193,16 @@ void get_icon (Task *tsk)
|
||||||
// DATA32 is provided by imlib2
|
// DATA32 is provided by imlib2
|
||||||
tsk->icon_data = malloc (w * h * sizeof (DATA32));
|
tsk->icon_data = malloc (w * h * sizeof (DATA32));
|
||||||
|
|
||||||
|
if (tsk->icon_data) {
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
int length = tsk->icon_width * tsk->icon_height;
|
int length = tsk->icon_width * tsk->icon_height;
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < length; ++i)
|
for (i = 0; i < length; ++i)
|
||||||
tsk->icon_data[i] = tmp_data[i];
|
tsk->icon_data[i] = tmp_data[i];
|
||||||
#else
|
#else
|
||||||
memcpy (tsk->icon_data, tmp_data, w * h * sizeof (DATA32));
|
memcpy (tsk->icon_data, tmp_data, w * h * sizeof (DATA32));
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
XFree (data);
|
XFree (data);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -229,20 +230,23 @@ void get_icon (Task *tsk)
|
||||||
tsk->icon_width = imlib_image_get_width();
|
tsk->icon_width = imlib_image_get_width();
|
||||||
tsk->icon_height = imlib_image_get_height();
|
tsk->icon_height = imlib_image_get_height();
|
||||||
tsk->icon_data = malloc (tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
tsk->icon_data = malloc (tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
||||||
memcpy (tsk->icon_data, data, tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
if (tsk->icon_data)
|
||||||
|
memcpy (tsk->icon_data, data, tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
||||||
imlib_free_image();
|
imlib_free_image();
|
||||||
}
|
}
|
||||||
XFree(hints);
|
XFree(hints);
|
||||||
}
|
}
|
||||||
|
|
||||||
tsk->icon_data_active = malloc (tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
if (tsk->icon_data) {
|
||||||
memcpy (tsk->icon_data_active, tsk->icon_data, tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
tsk->icon_data_active = malloc (tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
||||||
|
memcpy (tsk->icon_data_active, tsk->icon_data, tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
||||||
|
|
||||||
if (panel->g_task.hue != 0 || panel->g_task.saturation != 0 || panel->g_task.brightness != 0) {
|
if (panel->g_task.hue != 0 || panel->g_task.saturation != 0 || panel->g_task.brightness != 0) {
|
||||||
adjust_hsb(tsk->icon_data, tsk->icon_width, tsk->icon_height, (float)panel->g_task.hue/100, (float)panel->g_task.saturation/100, (float)panel->g_task.brightness/100);
|
adjust_hsb(tsk->icon_data, tsk->icon_width, tsk->icon_height, (float)panel->g_task.hue/100, (float)panel->g_task.saturation/100, (float)panel->g_task.brightness/100);
|
||||||
}
|
}
|
||||||
if (panel->g_task.hue_active != 0 || panel->g_task.saturation_active != 0 || panel->g_task.brightness_active != 0) {
|
if (panel->g_task.hue_active != 0 || panel->g_task.saturation_active != 0 || panel->g_task.brightness_active != 0) {
|
||||||
adjust_hsb(tsk->icon_data_active, tsk->icon_width, tsk->icon_height, (float)panel->g_task.hue_active/100, (float)panel->g_task.saturation_active/100, (float)panel->g_task.brightness_active/100);
|
adjust_hsb(tsk->icon_data_active, tsk->icon_width, tsk->icon_height, (float)panel->g_task.hue_active/100, (float)panel->g_task.saturation_active/100, (float)panel->g_task.brightness_active/100);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,8 +49,8 @@ typedef struct {
|
||||||
// ARGB icon
|
// ARGB icon
|
||||||
unsigned int *icon_data;
|
unsigned int *icon_data;
|
||||||
unsigned int *icon_data_active;
|
unsigned int *icon_data_active;
|
||||||
int icon_width;
|
unsigned int icon_width;
|
||||||
int icon_height;
|
unsigned int icon_height;
|
||||||
char *title;
|
char *title;
|
||||||
} Task;
|
} Task;
|
||||||
|
|
||||||
|
|
|
@ -30,20 +30,19 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void adjust_hsb(unsigned int *data, int w, int h, float hu, float satur, float bright)
|
void adjust_hsb(DATA32 *data, int w, int h, float hu, float satur, float bright)
|
||||||
{
|
{
|
||||||
unsigned int *pt = data;
|
unsigned int x, y;
|
||||||
int x, y;
|
|
||||||
unsigned int a, r, g, b, argb;
|
unsigned int a, r, g, b, argb;
|
||||||
|
unsigned long id;
|
||||||
int cmax, cmin;
|
int cmax, cmin;
|
||||||
float h2, f, p, q, t;
|
float h2, f, p, q, t;
|
||||||
float hue, saturation, brightness;
|
float hue, saturation, brightness;
|
||||||
float redc, greenc, bluec;
|
float redc, greenc, bluec;
|
||||||
|
|
||||||
|
|
||||||
for(y = 0; y < h; y++) {
|
for(y = 0; y < h; y++) {
|
||||||
for(x = 0; x < w; x++) {
|
for(id = y * w, x = 0; x < w; x++, id++) {
|
||||||
argb = pt[y * h + x];
|
argb = data[id];
|
||||||
a = (argb >> 24) & 0xff;
|
a = (argb >> 24) & 0xff;
|
||||||
r = (argb >> 16) & 0xff;
|
r = (argb >> 16) & 0xff;
|
||||||
g = (argb >> 8) & 0xff;
|
g = (argb >> 8) & 0xff;
|
||||||
|
@ -134,7 +133,7 @@ void adjust_hsb(unsigned int *data, int w, int h, float hu, float satur, float b
|
||||||
argb = (argb << 8) + r;
|
argb = (argb << 8) + r;
|
||||||
argb = (argb << 8) + g;
|
argb = (argb << 8) + g;
|
||||||
argb = (argb << 8) + b;
|
argb = (argb << 8) + b;
|
||||||
pt[y * h + x] = argb;
|
data[id] = argb;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#define WM_CLASS_TINT "panel"
|
#define WM_CLASS_TINT "panel"
|
||||||
|
|
||||||
|
#include <Imlib2.h>
|
||||||
#include "area.h"
|
#include "area.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -50,7 +51,7 @@ typedef struct config_color
|
||||||
|
|
||||||
|
|
||||||
// adjust HSB on an ARGB icon
|
// adjust HSB on an ARGB icon
|
||||||
void adjust_hsb(unsigned int *data, int w, int h, float hue, float satur, float bright);
|
void adjust_hsb(DATA32 *data, int w, int h, float hue, float satur, float bright);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue