fixed icon on 64 bit system by benjaminfranzke
git-svn-id: http://tint2.googlecode.com/svn/trunk@151 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
@@ -1,3 +1,6 @@
|
|||||||
|
2009-07-26
|
||||||
|
- fixed icon on 64 bit system by benjaminfranzke
|
||||||
|
|
||||||
2009-07-19
|
2009-07-19
|
||||||
- fixed systray crash by mart1987
|
- fixed systray crash by mart1987
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# -*- Autoconf -*-
|
# -*- Autoconf -*-
|
||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
AC_INIT([tint2], [0.7], [http://code.google.com/p/tint2/issues])
|
AC_INIT([tint2], [0.7.1], [http://code.google.com/p/tint2/issues])
|
||||||
|
|
||||||
LT_INIT
|
LT_INIT
|
||||||
AM_INIT_AUTOMAKE
|
AM_INIT_AUTOMAKE
|
||||||
|
|||||||
@@ -128,7 +128,6 @@ void remove_task (Task *tsk)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -187,8 +186,17 @@ void get_icon (Task *tsk)
|
|||||||
|
|
||||||
tsk->icon_width = w;
|
tsk->icon_width = w;
|
||||||
tsk->icon_height = h;
|
tsk->icon_height = h;
|
||||||
tsk->icon_data = malloc (w * h * sizeof (long));
|
// DATA32 is provided by imlib2
|
||||||
memcpy (tsk->icon_data, tmp_data, w * h * sizeof (long));
|
tsk->icon_data = malloc (w * h * sizeof (DATA32));
|
||||||
|
|
||||||
|
#ifdef __x86_64__
|
||||||
|
int length = tsk->icon_width * tsk->icon_height;
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < length; ++i)
|
||||||
|
tsk->icon_data[i] = tmp_data[i];
|
||||||
|
#else
|
||||||
|
memcpy (tsk->icon_data, tmp_data, w * h * sizeof (DATA32));
|
||||||
|
#endif
|
||||||
|
|
||||||
XFree (data);
|
XFree (data);
|
||||||
}
|
}
|
||||||
@@ -216,8 +224,8 @@ 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 (long));
|
tsk->icon_data = malloc (tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
||||||
memcpy (tsk->icon_data, data, tsk->icon_width * tsk->icon_height * sizeof (long));
|
memcpy (tsk->icon_data, data, tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
||||||
imlib_free_image();
|
imlib_free_image();
|
||||||
}
|
}
|
||||||
XFree(hints);
|
XFree(hints);
|
||||||
@@ -248,19 +256,7 @@ void draw_task_icon (Task *tsk, int text_width, int active)
|
|||||||
Imlib_Color_Modifier cmod;
|
Imlib_Color_Modifier cmod;
|
||||||
DATA8 red[256], green[256], blue[256], alpha[256];
|
DATA8 red[256], green[256], blue[256], alpha[256];
|
||||||
|
|
||||||
// TODO: cpu improvement : compute only when icon changed
|
icon = imlib_create_image_using_data (tsk->icon_width, tsk->icon_height, tsk->icon_data);
|
||||||
DATA32 *data;
|
|
||||||
/* do we have 64bit? => long = 8bit */
|
|
||||||
if (sizeof(long) != 4) {
|
|
||||||
int length = tsk->icon_width * tsk->icon_height;
|
|
||||||
data = malloc(sizeof(DATA32) * length);
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < length; ++i)
|
|
||||||
data[i] = tsk->icon_data[i];
|
|
||||||
}
|
|
||||||
else data = (DATA32 *) tsk->icon_data;
|
|
||||||
|
|
||||||
icon = imlib_create_image_using_data (tsk->icon_width, tsk->icon_height, data);
|
|
||||||
imlib_context_set_image (icon);
|
imlib_context_set_image (icon);
|
||||||
imlib_context_set_drawable (*pmap);
|
imlib_context_set_drawable (*pmap);
|
||||||
|
|
||||||
@@ -280,7 +276,6 @@ void draw_task_icon (Task *tsk, int text_width, int active)
|
|||||||
|
|
||||||
imlib_free_color_modifier ();
|
imlib_free_color_modifier ();
|
||||||
imlib_free_image ();
|
imlib_free_image ();
|
||||||
if (sizeof(long) != 4) free(data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ typedef struct {
|
|||||||
// TODO: group task with list of windows here
|
// TODO: group task with list of windows here
|
||||||
Window win;
|
Window win;
|
||||||
int desktop;
|
int desktop;
|
||||||
long *icon_data;
|
unsigned int *icon_data;
|
||||||
int icon_width;
|
int icon_width;
|
||||||
int icon_height;
|
int icon_height;
|
||||||
char *title;
|
char *title;
|
||||||
|
|||||||
Reference in New Issue
Block a user