view patches/openjdk/8159495-pr3276-xrender_index_offsets.patch @ 3283:37bb57406a61

PR3276: Backport latest XRender patches 2017-01-03 Andrew John Hughes <gnu.andrew@redhat.com> PR3276: Backport latest XRender patches * Makefile.am: (ICEDTEA_PATCHES): Add new XRender fixes. * NEWS: Updated. * patches/openjdk/6974985-pr3276-java2demo_exceptions.patch, * patches/openjdk/6985593-pr3276-maskblit_crash.patch, * patches/openjdk/8159495-pr3276-xrender_index_offsets.patch: Backported XRender fixes from OpenJDK 7.
author Andrew John Hughes <gnu.andrew@redhat.com>
date Tue, 03 Jan 2017 23:39:04 +0000
parents
children
line wrap: on
line source

# HG changeset patch
# User aivanov
# Date 1468330300 -10800
#      Tue Jul 12 16:31:40 2016 +0300
# Node ID bcd7f2459237d7edc725cf88cede673c906f9733
# Parent  70bc733187569edf04e2d8480bdb01cb43ff4c36
8159495, PR3276: Fix index offsets
8140530, PR3276: Creating a VolatileImage with size 0,0 results in no longer working g2d.drawString
Reviewed-by: prr, psadhukhan

diff --git a/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java b/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java
--- openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java
+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java
@@ -134,6 +134,9 @@
             vImg = (SunVolatileImage) dst.getGraphicsConfig().createCompatibleVolatileImage(w, h, src.getTransparency());
             vImg.setAccelerationPriority(1.0f);
 
+            if (!(vImg.getDestSurface() instanceof XRSurfaceData)) {
+                throw new InvalidPipeException("Could not create XRSurfaceData");
+            }
             if (src.getTransparency() == SurfaceData.OPAQUE) {
                 rgbTmpPM = new WeakReference<SunVolatileImage>(vImg);
             } else {
diff --git a/src/solaris/classes/sun/java2d/xr/XRSurfaceDataProxy.java b/src/solaris/classes/sun/java2d/xr/XRSurfaceDataProxy.java
--- openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceDataProxy.java
+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceDataProxy.java
@@ -59,8 +59,12 @@
     public SurfaceData validateSurfaceData(SurfaceData srcData,
             SurfaceData cachedData, int w, int h) {
         if (cachedData == null) {
-            cachedData = XRSurfaceData.createData(xrgc, w, h, xrgc
-                    .getColorModel(), null, 0, getTransparency());
+            try {
+                cachedData = XRSurfaceData.createData(xrgc, w, h,
+                                                      xrgc.getColorModel(), null, 0,
+                                                      getTransparency());
+            } catch (OutOfMemoryError oome) {
+            }
         }
         return cachedData;
     }