diff mbox

Rate limit vnc_write_pixels_generic

Message ID bd5d360e4e95c89f5d0179205b4bef90526db395.1336399330.git.hahn@univention.de
State New
Headers show

Commit Message

Philipp Hahn May 7, 2012, 1:58 p.m. UTC
Only print the error message once per change and also include the actual
unsupported color depth in bytes per pixel in the error message.

Signed-off-by: Philipp Hahn <hahn@univention.de>
---
 ui/vnc.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

Comments

Anthony Liguori May 7, 2012, 2:19 p.m. UTC | #1
On 05/07/2012 08:58 AM, Philipp Hahn wrote:
> Only print the error message once per change and also include the actual
> unsupported color depth in bytes per pixel in the error message.
>
> Signed-off-by: Philipp Hahn<hahn@univention.de>

Under what conditions are you seeing this happen?

Regards,

Anthony Liguori

> ---
>   ui/vnc.c |    8 +++++++-
>   1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/ui/vnc.c b/ui/vnc.c
> index deb9ecd..9dcff9b 100644
> --- a/ui/vnc.c
> +++ b/ui/vnc.c
> @@ -641,6 +641,7 @@ static void vnc_write_pixels_generic(VncState *vs, struct PixelFormat *pf,
>                                        void *pixels1, int size)
>   {
>       uint8_t buf[4];
> +    static uint8_t last_error_bpp = 4; /* any of the supported formats */
>
>       if (pf->bytes_per_pixel == 4) {
>           uint32_t *pixels = pixels1;
> @@ -667,7 +668,12 @@ static void vnc_write_pixels_generic(VncState *vs, struct PixelFormat *pf,
>               vnc_write(vs, buf, vs->clientds.pf.bytes_per_pixel);
>           }
>       } else {
> -        fprintf(stderr, "vnc_write_pixels_generic: VncState color depth not supported\n");
> +        if (last_error_bpp != pf->bytes_per_pixel) {
> +            last_error_bpp = pf->bytes_per_pixel;
> +            fprintf(stderr,
> +                    "vnc_write_pixels_generic: VncState color depth %d not supported\n",
> +                    pf->bytes_per_pixel);
> +        }
>       }
>   }
>
Philipp Hahn May 7, 2012, 3:04 p.m. UTC | #2
Hello Anthony,

Am Montag 07 Mai 2012 16:19:57 schrieb Anthony Liguori:
> On 05/07/2012 08:58 AM, Philipp Hahn wrote:
> > Only print the error message once per change and also include the actual
> > unsupported color depth in bytes per pixel in the error message.
> >
> > Signed-off-by: Philipp Hahn<hahn@univention.de>
>
> Under what conditions are you seeing this happen?

Actually the kvm-version I'm seeing this on is a custom build from one of our 
partners with a custom RDP/RemoteFX extension they're working on. That 
versions currently spams my console with the message:

2012-05-07 14:16:21.363: starting up
vnc_write_pixels_generic: VncState color depth not supported
... 767 lines removed ...
2012-05-07 14:16:42.998: shutting down

That's 36 messages per second. So I looked up the source code and found that 
line, where I don't even see which bpp fails. At least that info I would find 
very helpful, the rate limiting was just a bonus.

Sincerely
Philipp
diff mbox

Patch

diff --git a/ui/vnc.c b/ui/vnc.c
index deb9ecd..9dcff9b 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -641,6 +641,7 @@  static void vnc_write_pixels_generic(VncState *vs, struct PixelFormat *pf,
                                      void *pixels1, int size)
 {
     uint8_t buf[4];
+    static uint8_t last_error_bpp = 4; /* any of the supported formats */
 
     if (pf->bytes_per_pixel == 4) {
         uint32_t *pixels = pixels1;
@@ -667,7 +668,12 @@  static void vnc_write_pixels_generic(VncState *vs, struct PixelFormat *pf,
             vnc_write(vs, buf, vs->clientds.pf.bytes_per_pixel);
         }
     } else {
-        fprintf(stderr, "vnc_write_pixels_generic: VncState color depth not supported\n");
+        if (last_error_bpp != pf->bytes_per_pixel) {
+            last_error_bpp = pf->bytes_per_pixel;
+            fprintf(stderr,
+                    "vnc_write_pixels_generic: VncState color depth %d not supported\n",
+                    pf->bytes_per_pixel);
+        }
     }
 }