summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2008-06-10 13:54:53 -0400
committerRay Strode <rstrode@redhat.com>2008-06-10 13:54:53 -0400
commit1d30484098b9ad8cb837ee7d3359c45b24eebade (patch)
tree295be0439e418303b7ab8719cd25cb6a282c260b /src
parent5ac4dd13ae0c1924b0f2f17e11486f7b9b9eff42 (diff)
downloadplymouth-1d30484098b9ad8cb837ee7d3359c45b24eebade.tar.gz
plymouth-1d30484098b9ad8cb837ee7d3359c45b24eebade.tar.xz
plymouth-1d30484098b9ad8cb837ee7d3359c45b24eebade.zip
Bail if framebuffer is in pseudocolor mode
Diffstat (limited to 'src')
-rw-r--r--src/libply/ply-frame-buffer.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/libply/ply-frame-buffer.c b/src/libply/ply-frame-buffer.c
index 63199c1..beb8021 100644
--- a/src/libply/ply-frame-buffer.c
+++ b/src/libply/ply-frame-buffer.c
@@ -233,6 +233,19 @@ ply_frame_buffer_query_device (ply_frame_buffer_t *buffer)
buffer->alpha_bit_position = variable_screen_info.transp.offset;
buffer->bits_for_alpha = variable_screen_info.transp.length;
+ /* Normally the pixel is divided between the color components.
+ * If we have less bits per pixel than bits per color component,
+ * then we know we aren't using a direct color mapping. Instead
+ * we must be using an indexed palette and a pseudocolor mode, which
+ * we don't support.
+ */
+ if (variable_screen_info.bits_per_pixel <
+ buffer->bits_for_red + buffer->bits_for_green + buffer->bits_for_blue)
+ {
+ return false;
+ }
+
+
if (ioctl(buffer->device_fd, FBIOGET_FSCREENINFO, &fixed_screen_info) < 0)
{
return false;