Help for beginner. XCreatePixmap
aivils at latnet.lv
aivils at latnet.lv
Tue Nov 6 10:48:58 PST 2007
Hi, Mike!
[aivils at zibens ~]$ man -k XFree
XFree (3x) - free client data
XFreeColormap [XCreateColormap] (3x) - create, copy, or destroy colormaps and
color structure
XFreeColors [XAllocColor] (3x) - allocate and free colors
XFreeCursor [XRecolorCursor] (3x) - manipulate cursors
XFreeDeviceList [XListInputDevices] (3x) - list available input devices
XFreeFont [XLoadFont] (3x) - load or unload fonts and font metric structures
XFreeFontInfo [XListFonts] (3x) - obtain or free font names and information
XFreeFontNames [XListFonts] (3x) - obtain or free font names and information
XFreeFontPath [XSetFontPath] (3x) - set, get, or free the font search path
XFreeFontSet [XCreateFontSet] (3x) - create and free an international text
drawing font set
XFreeGC [XCreateGC] (3x) - create or free graphics contexts and graphics
context structure
XFreeModifierMap XModifierKeymap [XChangeKeyboardMapping] (3x) - manipulate
keyboard encoding and keyboard encoding structure
XFreePixmap [XCreatePixmap] (3x) - create or destroy pixmaps
XFreeStringList [XStringListToTextProperty] (3x) - convert string lists and
text property structure
Please check out by yourself what lacks in your code ;o)
Aivils
Citēju mike <flame-mike at zeelandnet.nl>:
> Hi, all.
>
> When I create a lot of pixmaps I can't freed memory,
> Wat I doe wrong?
>
> Before start program.
>
> mike at mike-desktop:~$ ps aux | grep /X11/X
> root 3708 6.0 2.0 12672 9152 tty7 Ss+ 11:19 0:01
> /usr/bin/X11/X -dpi 100 -nolisten tcp -ld 0 -ls 0 -lf 0 -bs -su -br
> -maxbigreqsize 1
>
> After
> mike at mike-desktop:~$ ps aux | grep /X11/X
> root 3708 1.1 2.9 51984 13324 tty7 Ss+ 11:19 0:02
> /usr/bin/X11/X -dpi 100 -nolisten tcp -ld 0 -ls 0 -lf 0 -bs -su -br
> -maxbigreqsize 1
>
>
>
>
> #include <X11/cursorfont.h>
> #include <stdio.h>
> #include <X11/Xlib.h>
> #include <stdio.h>
>
> Display *display;
> Window win1;
> XSetWindowAttributes attributes;
> XFontStruct *fontinfo;
> GC gr_context1;
> XArc arcs[10];
> Pixmap pixmap, pix[1024];
> Visual *visual;
> int screen;
> int depth;
> int i;
> main (argc, argv)
> char *argv[];
> int argc;
> {
> XGCValues gr_values;
> XEvent event;
>
> setbuf (stdout, NULL);
> setbuf (stderr, NULL);
> display = XOpenDisplay(NULL);
> screen = DefaultScreen(display);
> visual = DefaultVisual(display,screen);
> depth = DefaultDepth(display,screen);
> attributes.background_pixel = XWhitePixel(display,screen);
> attributes.border_pixel = XBlackPixel(display,screen);
> attributes.override_redirect = 0;
>
> for(i=0;i<10;i++){
> arcs[i].x = 100;arcs[i].y = 50;
> arcs[i].width = 100;arcs[i].height = 50;
> }
> for(i=0;i<5;i++){
> arcs[i].angle1 = 72*64*i;
> arcs[i].angle2 = 35*64;
> }
> for(i=5;i<10;i++){
> arcs[i].angle1 = 72*64*i + 36*64;
> arcs[i].angle2 = 35*64;
> }
>
> win1= XCreateWindow(display, XRootWindow(display,screen),
> 200,200, 300,200,5, depth, InputOutput, visual,
> CWBackPixel | CWBorderPixel |
> CWOverrideRedirect,&attributes);
>
> XSelectInput(display,win1,ExposureMask | ButtonPressMask |
> KeyPressMask);
> FILE *test;
> test = fopen("test.pix", "w");
> pixmap = XCreatePixmap(display,win1,200,100,depth);
> for (i=0; i<1024; i++){
> pix[i] = XCreatePixmap(display,win1,200,100,depth);
> fprintf(test, "%lu\n", pix[i]);
> }
> fclose(test);
> fontinfo = XLoadQueryFont(display,"6x10");
> gr_values.font = fontinfo->fid;
> gr_values.function = GXcopy;
> gr_values.plane_mask = AllPlanes;
> gr_values.foreground = BlackPixel(display,screen);
> gr_values.background = WhitePixel(display,screen);
> gr_context1=XCreateGC(display,win1,
> GCFont | GCFunction | GCPlaneMask | GCForeground |
> GCBackground,
> &gr_values);
>
> XDefineCursor(display,win1,XCreateFontCursor(display,XC_heart));
> XMapWindow(display,win1);
>
> do{
> XNextEvent(display,&event);
> if (event.type == Expose){
> draw_ellipse();
> XCopyArea(display,win1,pixmap,gr_context1,50,25,200,100,0,0);
> XSetFunction(display,gr_context1,GXinvert);
>
> XDrawImageString(display,pixmap,gr_context1,80,45,"pixmap",6);
> XDrawImageString(display,pixmap,gr_context1,90,60,"copy",4);
> XSetFunction(display,gr_context1,GXcopy);
> XDrawString(display,win1,gr_context1,10,20,
> "Press a key in this window",26);
> }
> }while (event.type !=KeyPress);
>
> XCopyArea(display,pixmap,win1,gr_context1,0,0,200,100,100,125);
> XDrawString(display,win1,gr_context1,10,32,
> "Now press a key to exit",23);
> XFlush(display);
>
> do{
> XNextEvent(display,&event);
> }while (event.type !=KeyPress);
>
> printf("closing display\n");
> for (i=0; i<1024; i++) XFreePixmap(display, pix[i]);
> XFreePixmap(display, pixmap);
> XCloseDisplay(display);
> }
>
> draw_ellipse()
> {
> XSetArcMode(display,gr_context1,ArcPieSlice);
> XFillArcs(display,win1,gr_context1,arcs,5);
> XSetArcMode(display,gr_context1,ArcChord);
> XFillArcs(display,win1,gr_context1,arcs+5,5);
> }
>
>
> _______________________________________________
> xorg mailing list
> xorg at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xorg
>
More information about the xorg
mailing list