]> source.dussan.org Git - tigervnc.git/commitdiff
Significantly improve performance by eliminating the intermediary MemoryImageSource...
authorBrian Hinz <bphinz@users.sourceforge.net>
Sun, 26 Aug 2012 18:20:15 +0000 (18:20 +0000)
committerBrian Hinz <bphinz@users.sourceforge.net>
Sun, 26 Aug 2012 18:20:15 +0000 (18:20 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4960 3789f03b-4d11-0410-bbf8-ca57d06f2519

java/com/tigervnc/vncviewer/BIPixelBuffer.java

index d5ec7b6b4039b2b4b18afdd5a989263c1866473e..88c939630556d06cc7223cdd49af8ef9fc56f9b3 100644 (file)
@@ -1,4 +1,5 @@
 /* Copyright (C) 2012 Brian P. Hinz
+ * Copyright (C) 2012 D. R. Commander.  All Rights Reserved.
  * 
  * This is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -33,14 +34,10 @@ public class BIPixelBuffer extends PlatformPixelBuffer implements ImageObserver
 
   public void setPF(PixelFormat pf) {
     super.setPF(pf);
-    if (source != null)
-      source.newPixels(data, cm, 0, width_);
   }
 
   public void updateColourMap() {
     cm = new IndexColorModel(8, nColours, reds, greens, blues);
-    if (source != null)
-      source.newPixels(data, cm, 0, width_);
   }
   
   // resize() resizes the image, preserving the image data where possible.
@@ -56,12 +53,11 @@ public class BIPixelBuffer extends PlatformPixelBuffer implements ImageObserver
     image = gc.createCompatibleImage(w, h, Transparency.TRANSLUCENT);
     image.setAccelerationPriority(1);
     image.createGraphics();
-    data = new int[width() * height()];
-    source = new MemoryImageSource(w, h, cm, data, 0, w);
-    source.setAnimated(true);
-    source.setFullBufferUpdates(false);
-    source.newPixels(data, cm, 0, width_);
-    sourceImage = tk.createImage(source);
+    WritableRaster wr = image.getRaster();
+    SinglePixelPackedSampleModel sm =
+      (SinglePixelPackedSampleModel)image.getSampleModel();
+    DataBufferInt db = (DataBufferInt)wr.getDataBuffer();
+    data = db.getData();
   }
 
   public void fillRect(int x, int y, int w, int h, int pix) {
@@ -98,12 +94,6 @@ public class BIPixelBuffer extends PlatformPixelBuffer implements ImageObserver
     } else {
       for (int j = 0; j < h; j++)
         System.arraycopy(pix, (w*j), data, width_ * (y + j) + x, w);
-      source.newPixels(x, y, w, h, true);
-      Graphics2D graphics = (Graphics2D)image.getGraphics();
-      graphics.setClip(x, y, w, h);
-      graphics.drawImage(sourceImage, 0, 0, null);
-      graphics.setClip(0, 0, width(), height());
-      graphics.dispose();
     }
   }
 
@@ -136,9 +126,6 @@ public class BIPixelBuffer extends PlatformPixelBuffer implements ImageObserver
   }
 
   BufferedImage image;
-  MemoryImageSource source;
-  int[] data;
-  Image sourceImage;
   Rectangle clip;
 
   static LogWriter vlog = new LogWriter("BIPixelBuffer");