Sponsored Content
Special Forums UNIX and Linux Applications Rectangle is flickering while dragging on screen with xlib Post 302907014 by whatnext on Wednesday 25th of June 2014 10:01:25 AM
Old 06-25-2014
Rectangle is flickering while dragging on screen with xlib

Hi, this is my first post here.

I wanto make a screencasting program. I want to make a screen part selection to grab coordinates of the screen location.
I found a nice prototype

Code:
#include <X11/Xlib.h>
//#include <X11/Xresource.h>

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main()
{
    Display *dpy;
    XEvent ev;

    GC sel_gc;
    XGCValues sel_gv;

    int x, y, i;
    int start_x, start_y, width, height;


    if (!(dpy = XOpenDisplay(NULL))) {
        fprintf(stderr, "Could not open display %s", getenv("DISPLAY"));
    }

    XGrabButton(dpy, 1, 0, DefaultRootWindow(dpy), True, ButtonPressMask, GrabModeSync, GrabModeAsync, None, None);

    sel_gv.function = GXinvert;
    sel_gv.subwindow_mode = IncludeInferiors;
    sel_gv.line_width = 1;
    sel_gc = XCreateGC(dpy, DefaultRootWindow(dpy), GCFunction | GCSubwindowMode | GCLineWidth, &sel_gv);

    for (;;) {
        XNextEvent(dpy, &ev);

        if (ev.type == ButtonPress) {
            /* Grab pointer so we receive ButtonRelease */
            XGrabPointer(dpy, DefaultRootWindow(dpy), True, PointerMotionMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime);
            x = start_x = ev.xbutton.x_root;
            y = start_y = ev.xbutton.y_root;

            width = height = 0;

            //XAllowEvents(dpy, ReplayPointer, CurrentTime); /* Allow other apps to process this message */
        } else if (ev.type == MotionNotify) {
            while (XCheckTypedEvent(dpy, MotionNotify, &ev));

            XDrawRectangle(dpy, DefaultRootWindow(dpy), sel_gc, x, y, width, height); /* Clear Rectangle */

            width = ev.xbutton.x_root - start_x;
            height = ev.xbutton.y_root - start_y;

            /* Ugliness to make width/height positive and put the start positions
             * in the right place so we can draw backwards basically. */
            if (width < 0) { width = abs(width); x = ev.xbutton.x_root; } else { x = start_x; }
            if (height < 0) { height = abs(height); y = ev.xbutton.y_root; } else { y = start_y; }

            XDrawRectangle(dpy, DefaultRootWindow(dpy), sel_gc, x, y, width, height); /* Draw Rectangle */
        } else if (ev.type == ButtonRelease) {
            XUngrabPointer(dpy, CurrentTime);

            XDrawRectangle(dpy, DefaultRootWindow(dpy), sel_gc, x, y, width, height); /* Clear Rectangle */

            XSync(dpy, 1); /* Needed to Ungrab Pointer NOW otherwise we continue receiving MotionNotify events and the previous line is useless */

            printf("%i %i %i %i\n", x, y, width, height);
        }
    }

    XFreeGC(dpy, sel_gc);

    XCloseDisplay(dpy);

    return 0;
}

I am on Ubuntu 14.04 platform, I compiled and run the code. While dragging mouse I get flickering and partially missing rectangle. I wonder if it's specific to my system or xlib library deprecated?

Would anybody here help me fix it please?
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

xlib error

Hello! Im running tight VNC on Red Hat Enterprise Linux 4.0. How can I increase the number of X clients that I can run in a VNC session?I need to run aproximately 500 programs in one VNC session, but at this time I can only 236 -> i've tryed to launch 250 xclock's in background and when it... (3 Replies)
Discussion started by: karpoand
3 Replies

2. OS X (Apple)

Virtual screen accessed by Screen Sharing

Hi, I'm trying to create a virtual screen, (maybe xvfb? or any other virtual screen buffer) and be able to use Screen Sharing to connect to it. The setup is that I have a Mac Mini connected to the TV. But when my girlfriend is using Front Row, I can't use Screen Sharing at the same time from... (0 Replies)
Discussion started by: linge
0 Replies

3. Ubuntu

laptop - flickering display

i have installed ubuntu 9.0.4 on my laptop and i have a display problem my laptop display flickers from time to time while i am using it and to me it is kind of annoying please reply thanks (8 Replies)
Discussion started by: mhilinski
8 Replies

4. UNIX and Linux Applications

xlib: allow overlay of other windows in full-screen

Hi, I am using the feh slideshow program in full-screen mode. While the slide show is in progress I would like to draw some other windows (something like clock or calendar from gdesklets) on top of this slideshow. Currently feh does not allow me to do that. Below is the code that feh uses to... (0 Replies)
Discussion started by: aerosmith
0 Replies

5. Red Hat

#service --status-all : screen flickering

hi there when i run #service --status-all or #service nfs status the screen flickers if i ssh from remote system than i dont have flickering on the remote nor that system. is it something to do with probably display configuration. ? and which file are the display setting... (7 Replies)
Discussion started by: dplinux
7 Replies

6. UNIX for Dummies Questions & Answers

Xlib Errors

Hi, I am handling user issues in my team. Users have their Unix session running on Citrix MFU. Recently, I was suppose to address a user issue which is as below: Gets the below error when tries to open nedit: Xlib: connection to ":165.0" refused by server Xlib: Client is not... (1 Reply)
Discussion started by: mspatil0037
1 Replies

7. Red Hat

command line tool to disable screen lock and/or screen saver

Hi, I have a simple question : how to disable screen lock and/or sreen saver with command line with RHEL5.4 ? (1 Reply)
Discussion started by: albator1932
1 Replies

8. UNIX for Advanced & Expert Users

Xlib: XKeysymToKeycode hangs

Two simple questions related to the following puzzling behaviour: I have the following line of code: const KeyCode kc = XKeysymToKeycode(_display_p, ks); where _display_p is a valid Display* returned from XOpenDisplay() and ks has the value 103 (which was returned by XStringToKeysym(),... (2 Replies)
Discussion started by: N7DR
2 Replies

9. UNIX for Dummies Questions & Answers

Accidentally made a screen within a screen - how to move it up one level?

I made a screen within a screen. Is there a way to move the inner screen up one level so that it is at the same level as the first screen running from the shell? (2 Replies)
Discussion started by: phpchick
2 Replies

10. Programming

Xlib registering

hey, Im new to the linux world. Lately, I have tried to create a glx window with xlib, making it a popup window(fullscreen) so I set override_redirect to true. Im happy with the removed borders, but apparantly, the application doesnt show up in the left bar in ubuntu, neither when I press alt... (4 Replies)
Discussion started by: thedardanius
4 Replies
XSHAPE(3X11)							    X FUNCTIONS 						      XSHAPE(3X11)

NAME
XShapeQueryExtension, XShapeQueryVersion, XShapeCombineRegion, XShapeCombineRectangles, XShapeCombineMask, XShapeCombineShape, XShapeOff- setShape, XShapeQueryExtents, XShapeSelectInput, XShapeInputSelected, XShapeGetRectangles - X nonrectangular shape functions SYNTAX
#include <X11/extensions/shape.h> Bool XShapeQueryExtension ( Display *dpy, int *event_basep, int *error_basep); Status XShapeQueryVersion ( Display *dpy, int *major_versionp, int *minor_versionp); void XShapeCombineRegion ( Display *dpy, Window dest, int destKind, int xOff, int yOff, struct _XRegion *r, int op); void XShapeCombineRectangles ( Display *dpy, XID dest, int destKind, int xOff, int yOff, XRectangle *rects, int n_rects, int op, int ordering); void XShapeCombineMask ( Display *dpy, XID dest, int destKind, int xOff, int yOff, Pixmap src, int op); void XShapeCombineShape ( Display *dpy, XID dest, int destKind, int xOff, int yOff, Pixmap src, int srcKind, int op); void XShapeOffsetShape ( Display *dpy, XID dest, int destKind, int xOff, int yOff); Status XShapeQueryExtents ( Display *dpy, Window window, int *bShaped, int *xbs, int *ybs, unsigned int *wbs, unsigned int *hbs, int *cShaped, int *xcs, int *ycs, unsigned int *wcs, unsigned int *hcs); void XShapeSelectInput ( Display *dpy, Window window, unsigned longmask); unsigned long XShapeInputSelected ( Display *dpy, Window window); XRectangle *XShapeGetRectangles ( Display *dpy, Window window, int kind, int *count, int *ordering); STRUCTURES
typedef struct { int type; unsigned long serial; Bool send_event; Display *display; Window window; int kind; int x, y; unsigned width, height; Time time; Bool shaped; } XShapeEvent; DESCRIPTION
The X11 Nonrectangular Window Shape Extension adds nonrectangular windows to the X Window System. PREDEFINED VALUES
Operations: ShapeSet ShapeUnion ShapeIntersect ShapeSubtract ShapeInvert Shape Kinds: ShapeBounding ShapeClip Event defines: ShapeNotifyMask ShapeNotify BUGS
This manual pages needs a lot more work. SEE ALSO
X11 Nonrectangular Window Shape Extension X Version 11 Release 6.6 XSHAPE(3X11)
All times are GMT -4. The time now is 10:49 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy