diff --git a/common/rfb/ClientParams.h b/common/rfb/ClientParams.h
index aab3d64..ca5199a 100644
--- a/common/rfb/ClientParams.h
+++ b/common/rfb/ClientParams.h
@@ -62,8 +62,8 @@
       return !beforeVersion(major,minor+1);
     }
 
-    const int width() const { return width_; }
-    const int height() const { return height_; }
+    int width() const { return width_; }
+    int height() const { return height_; }
     const ScreenSet& screenLayout() const { return screenLayout_; }
     void setDimensions(int width, int height);
     void setDimensions(int width, int height, const ScreenSet& layout);
diff --git a/common/rfb/SDesktop.h b/common/rfb/SDesktop.h
index b4104ea..a41e5be 100644
--- a/common/rfb/SDesktop.h
+++ b/common/rfb/SDesktop.h
@@ -149,7 +149,7 @@
       server = 0;
     }
     virtual void queryConnection(network::Socket* sock,
-                                 const char* userName) {
+                                 __unused_attr const char* userName) {
       server->approveConnection(sock, true, NULL);
     }
 
diff --git a/common/rfb/ServerParams.h b/common/rfb/ServerParams.h
index c84f625..e186a5f 100644
--- a/common/rfb/ServerParams.h
+++ b/common/rfb/ServerParams.h
@@ -51,8 +51,8 @@
       return !beforeVersion(major,minor+1);
     }
 
-    const int width() const { return width_; }
-    const int height() const { return height_; }
+    int width() const { return width_; }
+    int height() const { return height_; }
     const ScreenSet& screenLayout() const { return screenLayout_; }
     void setDimensions(int width, int height);
     void setDimensions(int width, int height, const ScreenSet& layout);
