Error in function XLIB:PUT-IMAGE:
The bits-per-pixel of the image #<XLIB:IMAGE-Z
32x32x24> does not match any server pixmap format.
[Condition of type SIMPLE-ERROR]
Restarts:
0: [ABORT ] Discard pending X events, restart loop
1: [DESTROY] Destroy the process
;;; CHANGE LOG:
#|
+ 29-JUL-2007 Fred Gilham - Fix previous fix so it's really fixed (I hope).
+ (See CREATE-PIXMAP-IMAGE.)
17-DEC-1999 Fred Gilham - Fix problem where pixmap format doesn't match valid
pixmap formats in displays with different `depth' and
`bits-per-pixel' values.
***************
*** 292,298 ****
;; DZG (if (getf properties :x-hot)
;; DZG (xlib::index-decf (getf properties :x-hot) left-pad))
(gem:create-image root-window width height depth T ; from data
! data properties #-(and) bits-per-pixel #+(and) nil
left-pad data))))))
--- 294,300 ----
;; DZG (if (getf properties :x-hot)
;; DZG (xlib::index-decf (getf properties :x-hot) left-pad))
(gem:create-image root-window width height depth T ; from data
! data properties bits-per-pixel
left-pad data))))))
***************
*** 435,447 ****
(defun create-pixmap-image (width height
&optional color
(window (g-value device-info :current-root)))
! (let ((depth (gem::x-window-depth window)))
! ;; Passing the display depth as the `bits-per-pixel' optional
! ;; parameter seems to avoid problems of displays where the depth
! ;; of the pixmap formats is different from the bits-per-pixel of
! ;; the pixmap formats, i.e. 24-bit depth but 32-bit
! ;; bits-per-pixel.
! (gem:create-image window width height depth NIL color NIL #-(and) depth)))
;;; Creates a pixmap image containing whatever is in the window.
--- 437,448 ----
(defun create-pixmap-image (width height
&optional color
(window (g-value device-info :current-root)))
! (let* ((depth (gem::x-window-depth window))
! ;; The depth and bits-per-pixel may not match --- i.e. a 24-bit depth but a 32-bit
! ;; bits-per-pixel. Some servers will complain if they can't find a matching
! ;; combination. So we get the actual bits-per-pixel and pass that to CREATE-IMAGE.
! (bits-per-pixel (gem::depth-to-bits-per-pixel depth)))
! (gem:create-image window width height depth NIL color NIL bits-per-pixel)))
;;; Creates a pixmap image containing whatever is in the window.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I've seen bad pixmap rendering from ACL for many years. I am not sure what's wrong with it. I have not seen any problems with any of the other lisps I test with (currently SBCL, CCL and CMUCL).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Logged In: YES
user_id=275595
ACL7
Logged In: NO
If this is due to a break like the following:
Error in function XLIB:PUT-IMAGE:
The bits-per-pixel of the image #<XLIB:IMAGE-Z
32x32x24> does not match any server pixmap format.
[Condition of type SIMPLE-ERROR]
Restarts:
0: [ABORT ] Discard pending X events, restart loop
1: [DESTROY] Destroy the process
Debug (type H for help)
(XLIB:PUT-IMAGE #<XLIB:WINDOW :0 3600051>
#<XLIB:GCONTEXT :0 56623183>
#<XLIB:IMAGE-Z 32x32x24>
:SRC-X ...)
0]
then this is a problem with servers where the depth differs from bits per pixel. Here's a patch that may fix it:
*** garnet/src/opal/pixmaps.lisp Fri Nov 21 13:51:53 2003
--- pixmaps.lisp Mon Aug 6 14:23:12 2007
***************
*** 13,18 ****
--- 13,20 ----
;;; CHANGE LOG:
#|
+ 29-JUL-2007 Fred Gilham - Fix previous fix so it's really fixed (I hope).
+ (See CREATE-PIXMAP-IMAGE.)
17-DEC-1999 Fred Gilham - Fix problem where pixmap format doesn't match valid
pixmap formats in displays with different `depth' and
`bits-per-pixel' values.
***************
*** 292,298 ****
;; DZG (if (getf properties :x-hot)
;; DZG (xlib::index-decf (getf properties :x-hot) left-pad))
(gem:create-image root-window width height depth T ; from data
! data properties #-(and) bits-per-pixel #+(and) nil
left-pad data))))))
--- 294,300 ----
;; DZG (if (getf properties :x-hot)
;; DZG (xlib::index-decf (getf properties :x-hot) left-pad))
(gem:create-image root-window width height depth T ; from data
! data properties bits-per-pixel
left-pad data))))))
***************
*** 435,447 ****
(defun create-pixmap-image (width height
&optional color
(window (g-value device-info :current-root)))
! (let ((depth (gem::x-window-depth window)))
! ;; Passing the display depth as the `bits-per-pixel' optional
! ;; parameter seems to avoid problems of displays where the depth
! ;; of the pixmap formats is different from the bits-per-pixel of
! ;; the pixmap formats, i.e. 24-bit depth but 32-bit
! ;; bits-per-pixel.
! (gem:create-image window width height depth NIL color NIL #-(and) depth)))
;;; Creates a pixmap image containing whatever is in the window.
--- 437,448 ----
(defun create-pixmap-image (width height
&optional color
(window (g-value device-info :current-root)))
! (let* ((depth (gem::x-window-depth window))
! ;; The depth and bits-per-pixel may not match --- i.e. a 24-bit depth but a 32-bit
! ;; bits-per-pixel. Some servers will complain if they can't find a matching
! ;; combination. So we get the actual bits-per-pixel and pass that to CREATE-IMAGE.
! (bits-per-pixel (gem::depth-to-bits-per-pixel depth)))
! (gem:create-image window width height depth NIL color NIL bits-per-pixel)))
;;; Creates a pixmap image containing whatever is in the window.
I've seen bad pixmap rendering from ACL for many years. I am not sure what's wrong with it. I have not seen any problems with any of the other lisps I test with (currently SBCL, CCL and CMUCL).