# How do I solve the following error in Linux Graphics C program?

I am trying to compile the following code,but it gives me a error message as listed below. I am a beginner in linux c graphics and cannot figure it out. Can anyone suggest a solution?

code:

#include<stdio.h> #include<graphics.h> void main() { int gd = DETECT, gm; int dx, dy, p, end; float x1, x2, y1, y2, x, y; initgraph(&gd, &gm,NULL); printf("Enter Value of X1: "); scanf("%f", &x1); printf("Enter Value of Y1: "); scanf("%f", &y1); printf("Enter Value of X2: "); scanf("%f", &x2); printf("Enter Value of Y2: "); scanf("%f", &y2); dx = abs(x1 - x2); dy = abs(y1 - y2); p = 2 * dy - dx; if(x1 > x2) { x = x2; y = y2; end = x1; } else { x = x1; y = y1; end = x2; } putpixel(x, y, 10); while(x < end) { x = x + 1; if(p < 0) { p = p + 2 * dy; } else { y = y + 1; p = p + 2 * (dy - dx); } putpixel(x, y, 10); } getch(); closegraph(); }

error message:

meshramsd@ubuntu:~/libgraph-1.0.2$ ./b [xcb] Unknown sequence number while processing queue [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called [xcb] Aborting, sorry about that. b: ../../src/xcb_io.c:274: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost' failed. [xcb] Unknown sequence number while processing queue [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called [xcb] Aborting, sorry about that. b: ../../src/xcb_io.c:274: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost' failed. Aborted (core dumped)

## Answers

You can try using libsvga which seems to run fine on Linux Mint - I ran Mint under Virtualbox on a Mac with no problems.

I installed the following packages:

sudo apt-get install svgalib-bin libsvga1 libsvga1-dev

And then I hacked your code into the following:

#include <stdlib.h> #include <math.h> #include <unistd.h> #include <vga.h> #include<stdio.h> void main() { int dx, dy, p, end; /* detect the chipset and give up supervisor rights */ if (vga_init() < 0) return EXIT_FAILURE; vga_setmode(G1024x768x256); /* some low resolution dont work */ vga_setcolor(14); /* color of pixel */ float x1, x2, y1, y2, x, y; x1=10; y1=40; x2=800; y2=500; dx = abs(x1 - x2); dy = abs(y1 - y2); p = 2 * dy - dx; if(x1 > x2) { x = x2; y = y2; end = x1; } else { x = x1; y = y1; end = x2; } vga_drawpixel(x, y); while(x < end){ x = x + 1; if(p < 0) { p = p + 2 * dy; } else { y = y + 1; p = p + 2 * (dy - dx); } vga_drawpixel(x, y); } sleep(10); /* restore textmode and fall back to ordinary text console handling */ vga_setmode(TEXT); }

I compiled like this:

gcc graphics.c -lvga -lm -o graphics

and ran with:

sudo ./graphics

I got this output - you can change the numbers easily enough if you want a different colour or size.