Make x11grab output its warning that it couldn't find the mouse pointer only
authorPanagiotis Issaris <takis.issaris@uhasselt.be>
Fri, 2 Feb 2007 17:54:50 +0000 (17:54 +0000)
committerPanagiotis Issaris <takis.issaris@uhasselt.be>
Fri, 2 Feb 2007 17:54:50 +0000 (17:54 +0000)
once. This prevents flooding of the terminal when grabbing from a different
X-screen.

Originally committed as revision 7808 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/x11grab.c

index 66e3be5..86b13ed 100644 (file)
@@ -70,6 +70,7 @@ typedef struct x11_grab_s
     XImage *image;           /**< X11 image holding the grab */
     int use_shm;             /**< !0 when using XShm extension */
     XShmSegmentInfo shminfo; /**< When using XShm, keeps track of XShm infos */
+    int mouse_warning_shown;
 } x11_grab_t;
 
 /**
@@ -237,6 +238,7 @@ x11grab_read_header(AVFormatContext *s1, AVFormatParameters *ap)
     x11grab->y_off = y_off;
     x11grab->image = image;
     x11grab->use_shm = use_shm;
+    x11grab->mouse_warning_shown = 0;
 
     st->codec->codec_type = CODEC_TYPE_VIDEO;
     st->codec->codec_id = CODEC_ID_RAWVIDEO;
@@ -268,7 +270,11 @@ get_pointer_coordinates(int *x, int *y, Display *dpy, AVFormatContext *s1)
     if (XQueryPointer(dpy, mrootwindow, &mrootwindow, &childwindow,
                       x, y, &dummy, &dummy, (unsigned int*)&dummy)) {
     } else {
-        av_log(s1, AV_LOG_INFO, "couldn't find mouse pointer\n");
+        x11_grab_t *s = s1->priv_data;
+        if (!s->mouse_warning_shown) {
+            av_log(s1, AV_LOG_INFO, "couldn't find mouse pointer\n");
+            s->mouse_warning_shown = 1;
+        }
         *x = -1;
         *y = -1;
     }