diff --git a/common/rfb/IrixCLJpegCompressor.cxx b/common/rfb/IrixCLJpegCompressor.cxx
index 3e33a0c..5fef166 100644
--- a/common/rfb/IrixCLJpegCompressor.cxx
+++ b/common/rfb/IrixCLJpegCompressor.cxx
@@ -45,16 +45,15 @@
     return;
   }
 
-  // DEBUG: Uncomment to test without hardware compressor.
-  /*
-  vlog.debug("Trying Irix software JPEG compressor (debug mode!)");
+#ifdef DEBUG_FORCE_CL
+  vlog.debug("DEBUG: Trying Irix software JPEG compressor");
   r = clOpenCompressor(CL_JPEG_SOFTWARE, &m_clHandle);
   if (r == SUCCESS) {
-    vlog.debug("Using Irix software JPEG compressor (debug mode!)");
+    vlog.debug("DEBUG: Using Irix software JPEG compressor");
     m_clHandleValid = true;
     return;
   }
-  */
+#endif
 
   vlog.error("Ho hardware JPEG available via Irix CL library");
 }
@@ -129,16 +128,6 @@
   // Determine buffer size required.
   int newBufferSize = clGetParam(m_clHandle, CL_COMPRESSED_BUFFER_SIZE);
 
-  /* DEBUG:
-  int arr[200];
-  int nn = clQueryParams(m_clHandle, arr, 200);
-  vlog.debug("Params:");
-  for (int ii = 0; ii < nn; ii += 2) {
-    int id = clGetParamID(m_clHandle, (char *)arr[ii]);
-    vlog.debug("  %s = %d", (char*)arr[ii], clGetParam(m_clHandle, id));
-  }
-  */
-
   // (Re)allocate destination buffer if necessary.
   if (newBufferSize > m_dstBufferSize) {
     if (m_compressedData)
diff --git a/common/rfb/JpegEncoder.cxx b/common/rfb/JpegEncoder.cxx
index 1d9b3c7..f3dbdee 100644
--- a/common/rfb/JpegEncoder.cxx
+++ b/common/rfb/JpegEncoder.cxx
@@ -45,7 +45,24 @@
 
 JpegEncoder::JpegEncoder(SMsgWriter* writer_) : writer(writer_), jcomp(0)
 {
-  // FIXME: DM should be preferred over CL.
+#ifdef HAVE_DMEDIA
+#ifdef DEBUG_FORCE_CL
+    vlog.debug("DEBUG: skipping IRIX DM JPEG compressor");
+#else
+  if (!jcomp && useHardwareJPEG) {
+    vlog.debug("trying IRIX DM JPEG compressor");
+    IrixDMJpegCompressor *dmComp = new IrixDMJpegCompressor;
+    if (dmComp->isValid()) {
+      vlog.debug("initialized IRIX DM JPEG compressor successfully");
+      jcomp = dmComp;
+    } else {
+      vlog.error("warning: could not create IRIX DM JPEG compressor");
+      delete dmComp;
+    }
+  }
+#endif
+#endif
+
 #ifdef HAVE_CL
   if (!jcomp && useHardwareJPEG) {
     vlog.debug("trying IRIX CL JPEG compressor");
@@ -59,19 +76,7 @@
     }
   }
 #endif
-#ifdef HAVE_DMEDIA
-  if (!jcomp && useHardwareJPEG) {
-    vlog.debug("trying IRIX DM JPEG compressor");
-    IrixDMJpegCompressor *dmComp = new IrixDMJpegCompressor;
-    if (dmComp->isValid()) {
-      vlog.debug("initialized IRIX DM JPEG compressor successfully");
-      jcomp = dmComp;
-    } else {
-      vlog.error("warning: could not create IRIX DM JPEG compressor");
-      delete dmComp;
-    }
-  }
-#endif
+
   if (!jcomp) {
     if (useHardwareJPEG) {
       vlog.info("no hardware JPEG compressor available");
