diff options
| author | Ray Strode <rstrode@redhat.com> | 2008-06-10 13:54:53 -0400 |
|---|---|---|
| committer | Ray Strode <rstrode@redhat.com> | 2008-06-10 13:54:53 -0400 |
| commit | 1d30484098b9ad8cb837ee7d3359c45b24eebade (patch) | |
| tree | 295be0439e418303b7ab8719cd25cb6a282c260b /src | |
| parent | 5ac4dd13ae0c1924b0f2f17e11486f7b9b9eff42 (diff) | |
| download | plymouth-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.c | 13 |
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; |
