Sponsored Content
Full Discussion: xlib blues (XFree86 - Linux)
Top Forums Programming xlib blues (XFree86 - Linux) Post 91321 by Alux on Thursday 1st of December 2005 03:40:49 AM
Old 12-01-2005
xlib blues (XFree86 - Linux)

My goal is to open a window in the X-server and plot a series of pixels. However, I find many examples I have tried to draw to a window fail and the window remains blank. Therefore, I am here requesting information. I do not know c, and am a beginner. Currently, I am using a mix-match of code, running against the gcc compiler finding errors and fixing them as I go along. I have experienced segmentation faults, but the following code produces a minimal amount of error.

Code:
/* window.c --This program opens a window on the display
* Use "gcc -o window window.c -L/usr/X11R6/lib -lX11
* to compile this code.
*/


#include <X11/X.h>
#include <X11/Xlib.h>
#include<stdio.h>
#define width	320
#define height	200

int main(void)
{
Display *display;
Window window, rootwindow;
int screen;
GC gc;
XImage *img=NULL;
int x;
int y;

display = XOpenDisplay(NULL);
screen = DefaultScreen(display);
gc = DefaultGC(display, screen);
rootwindow = RootWindow(display,screen);
window = XCreateSimpleWindow(display, rootwindow,
                0, 0, width, height, 1, 0, 0);
XMapWindow(display, window);
XImage *xi;
unsigned long pixelvalue1;


xi = XCreateImage(display, 0, 8, ZPixmap,
                   0, malloc(width*height), width, height, 
		   8, 0);

pixelvalue1 = 65535;
for (x = 0; x < width/2; x++)
	{
		for(y = 0; y < height/2; y++)
			{
				XPutPixel(xi, x, y, pixelvalue1);
			}
	}
printf("putting image\n");

XPutImage(display, window, gc, xi, 0, 0, 0, 0, width, height);
sleep (5);
return (0);
}

The result of this code, is to open a window (which it does) for 5 seconds/cycles, and also plot a series of pixels half the length of the width and height specified.

However, what actually happens is it opens a window with a black background, plots nothing, and I am left frustrated with little resources. I suspect the problem may lie in either XCreateImage, or XPutPixel commands. I suspect I have not got the right values for either command.

Can anyone here offer a simple solution to my problem of wanting to plot pixels to a window?

Finally - I would like to elabroate on my plans...

I intend to further the pixel plotting using double buffering, for a simple animation routine I written in PHP graphics. As animation is not available in PHP, this is the reason for myself attempting c coding without any prior knowledge of the c language. However, I do have a basic grasp of BASIC (if, for, while etc), and constant/variable declaration (int, long, double etc).

Please can someone enlighten me with a code snippet as to how I can accomplish my goal of plotting individual pixels to the screen.

Much thanks,

Alux.
 

8 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

NFS Blues

I have a situation where there are two SCO R5 Open Server Unix boxes in a remote location. The two boxes are inter-related via NFS mounts. My problem occurs when one of the boxes goes down, the NFS relationship stops the remaining machine from carrying on, even though it would be able to do so if... (2 Replies)
Discussion started by: pcs7088
2 Replies

2. Filesystems, Disks and Memory

D'oh! Apple Pro Keyboard Blues

My new Pro Keyboard works great, but the power switch on the computer won't turn the computer on! It's an older model, a Revision D iMac (333), but I know I've used the computer-mounted power switch to power the machine down before. Am I missing something? (1 Reply)
Discussion started by: chenly
1 Replies

3. UNIX Desktop Questions & Answers

ATI && XFree86 (Linux)

Anyone who have any ideas how-to make X faster. I have a ATI Rage Mobility P/M AGP 2x card and I wanto get it fast, mostly for movie playback and so. Is there OpenGL and GLX support? regards Esaia (1 Reply)
Discussion started by: Esaia
1 Replies

4. BSD

again XFree86

hi everybody i installed FreeBSD 5.x on a box with a video card Diamond SpeedStar A90 and a Fujitsu Siemens Monitor B772-1 when i do "startx" it gives me something like this: fatal error: no devices detected no screen detected i'm lost...i don't know what to... (3 Replies)
Discussion started by: hmaiida
3 Replies

5. What is on Your Mind?

Career blues!!!

Hi all, Just writing to know how to approach the situation. I am currently with 2+ exp in a support environment in Unix..mostly on the application side..have not done any Sysadmin work.. My interest is to move towards Unix admin or towards Storage/Networking side..But the problem is that my... (1 Reply)
Discussion started by: ranj@chn
1 Replies

6. UNIX Desktop Questions & Answers

kde blues

So I'm pretty much a n00b when it comes to Unix but I've decided to give it a shot. I managed to install FreeBSD 6.2 on one partition of my hard drive on my laptop. During the installation I choose to install KDE, not wanting to deal with a non GUI operating system right away! However, whenever I... (1 Reply)
Discussion started by: rinquisitor
1 Replies

7. UNIX for Dummies Questions & Answers

New account blues !

hi .. I tried to create a new account with useradd leghorn (being in root) Also I gave a password for the same using passwd leghorn. So when I go su legorn, it doesnt prompt for the password. Kindly drop in your valuable comments ~cheers (9 Replies)
Discussion started by: leghorn
9 Replies

8. Programming

Linux (Xlib) Application hangs on GetGeometry()

Hello, I was just wondering why XGetGeometry() would cause a hang in an application. In the xlib book it says any of there "Get" functions don't necessarily return immediately. Is there a way to make a it return immediately or other functions that will give me the same results. I... (1 Reply)
Discussion started by: TMurray77
1 Replies
XEV(1)							      General Commands Manual							    XEV(1)

NAME
xev - print contents of X events SYNOPSIS
xev [-display displayname] [-geometry geom] [-bw pixels] [-bs {NotUseful,WhenMapped,Always}] [-id windowid] [-s] [-name string] [-rv] DESCRIPTION
Xev creates a window and then asks the X server to send it events whenever anything happens to the window (such as it being moved, resized, typed in, clicked in, etc.). You can also attach it to an existing window. It is useful for seeing what causes events to occur and to display the information that they contain; it is essentially a debugging and development tool, and should not be needed in normal usage. OPTIONS
-display display This option specifies the X server to contact. -geometry geom This option specifies the size and/or location of the window, if a window is to be created. -bw pixels This option specifies the border width for the window. -bs {NotUseful,WhenMapped,Always} This option specifies what kind of backing store to give the window. The default is NotUseful. Backing store refers to the the pixels saved off-screen when the X server maintains the contents of a window; NotUseful means that the xev process will redraw its contents itself, as necessary. -id windowid This option specifies that the window with the given id should be monitored, instead of creating a new window. -s This option specifies that save-unders should be enabled on the window. Save unders are similar to backing store, but they refer rather to the saving of pixels off-screen when the current window obscures other windows. Save unders are only advisory, and are normally set for popup dialogs and other transient windows. -name string This option specifies the name to assign to the created window. -rv This option specifies that the window should be in reverse video. SEE ALSO
X(7), xwininfo(1), xdpyinfo(1), Xlib Programmers Manual, X Protocol Specification See X(7) for a full statement of rights and permissions. AUTHOR
Jim Fulton, MIT X Consortium X Version 11 xev 1.0.4 XEV(1)
All times are GMT -4. The time now is 01:24 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy