< prev index next >

src/java.desktop/share/classes/java/awt/image/Raster.java

Print this page

        

@@ -975,34 +975,49 @@
         int dataType = sm.getDataType();
 
         if (sm instanceof PixelInterleavedSampleModel) {
             switch(dataType) {
                 case DataBuffer.TYPE_BYTE:
+                    if (db instanceof DataBufferByte) {
                     return new ByteInterleavedRaster(sm, db, location);
+                    }
+                    break;
 
                 case DataBuffer.TYPE_USHORT:
+                    if (db instanceof DataBufferUShort) {
                     return new ShortInterleavedRaster(sm, db, location);
             }
+                    break;
+            }
         } else if (sm instanceof SinglePixelPackedSampleModel) {
             switch(dataType) {
                 case DataBuffer.TYPE_BYTE:
+                    if (db instanceof DataBufferByte) {
                     return new ByteInterleavedRaster(sm, db, location);
+                    }
+                    break;
 
                 case DataBuffer.TYPE_USHORT:
+                    if (db instanceof DataBufferUShort) {
                     return new ShortInterleavedRaster(sm, db, location);
+                    }
+                    break;
 
                 case DataBuffer.TYPE_INT:
+                    if (db instanceof DataBufferInt) {
                     return new IntegerInterleavedRaster(sm, db, location);
             }
+                    break;
+            }
         } else if (sm instanceof MultiPixelPackedSampleModel &&
                    dataType == DataBuffer.TYPE_BYTE &&
+                   db instanceof DataBufferByte &&
                    sm.getSampleSize(0) < 8) {
             return new BytePackedRaster(sm, db, location);
         }
 
         // we couldn't do anything special - do the generic thing
-
         return new SunWritableRaster(sm,db,location);
     }
 
     /**
      *  Constructs a Raster with the given SampleModel.  The Raster's
< prev index next >