On Tue, 22 Nov 2022 22:01:10 GMT, Andy Goryachev <ango...@openjdk.org> wrote:
>> modules/javafx.graphics/src/main/java/com/sun/javafx/application/LauncherImpl.java >> line 783: >> >>> 781: if (simulateSlowProgress) { >>> 782: for (int i = 0; i < 100; i++) { >>> 783: notifyProgress(currentPreloader, i / >>> 100.0); >> >> Does Eclipse really flag this as a warning? It doesn't seem a particularly >> useful warning, since an explicit cast to double is a reasonable pattern >> that can improve clarity, even if it isn't needed. In this specific case it >> is pretty clear without the explicit cast that it will do what you want, but >> other places are not so clear. > > 100.0 is a double, so the result is also a double Right. Which is why I said that in this specific case it (meaning the changed code) is clear without the explicit cast. So I don't object to this particular change. I just used it as the first example I found to point out an overall concern. >> modules/javafx.graphics/src/main/java/com/sun/javafx/font/PrismFontFile.java >> line 1240: >> >>> 1238: cadv = advanceWidths[numHMetrics-1]; >>> 1239: } >>> 1240: return ((cadv & 0xffff)*ptSize)/upem; >> >> This is an example where I think the explicit cast makes it easier to >> quickly tell at a glance that it is correct, even though it happens to be >> unnecessary. In this case, I would need to look at the definition of >> `ptSize` and `upem` to know that it is unneeded, and thus correct without it. > > Eclipse knows it is unnecessary. Personally, I am in favor of removing such > unnecessary code. If it aids readability, I don't see it as unnecessary. In this case, since the types of all of the variables are not known, you could certainly argue it doesn't matter much -- you need to look at the types to reason about what it does. >> modules/javafx.graphics/src/main/java/com/sun/javafx/tk/quantum/RotateGestureRecognizer.java >> line 230: >> >>> 228: } >>> 229: if (ROTATION_INERTIA_ENABLED && (state == >>> RotateRecognitionState.PRE_INERTIA || state == >>> RotateRecognitionState.ACTIVE)) { >>> 230: double timeFromLastRotation = (time - >>> rotationStartTime) / 1000000; >> >> Another place where I'm not sure removing the explicit cast is best >> (probably OK here). > > rotationStartTime is a double. the type cast is really unnecessary But you don't know that without looking. Really, though, if I were going to make a readability argument, it's the divisor that should be a double constant, since then there is no question that the division is happen in double. I don't care too much in this case. I was just making a general point. >> modules/javafx.graphics/src/main/java/com/sun/prism/d3d/D3DTextureData.java >> line 45: >> >>> 43: boolean hasDepth) >>> 44: { >>> 45: return (long) physicalWidth * physicalHeight * 4L; >> >> Another case where the old code might be clearer. > > good catch - I think the change is not equivalent. It should be either > > 4L * physicalWidth * physicalHeight; > > > or > > > ((long)physicalWidth) * physicalHeight * 4L; > > > the proposed change might result in overflow bc the first intermediate result > is likely to be int. Actually, I think the new code correct, though less clear, since `(long)` is applied to `physicalWidth` before the multiplication. The fact that we had to scratch our head and discuss it highlights the point I was trying to make. I do think this is one place where reverting the code back would be best. Then it's obvious that all of the intermediate calculations are in long. >> modules/javafx.graphics/src/main/java/com/sun/prism/d3d/D3DVramPool.java >> line 59: >> >>> 57: { >>> 58: // REMIND: need to deal with size of depth buffer, etc. >>> 59: return (long) width * height * 4; >> >> Ditto > > 4L * w * h; I would just revert it back. >> modules/javafx.graphics/src/main/java/com/sun/prism/impl/ps/PaintHelper.java >> line 310: >> >>> 308: shader.setConstants("fractions", stopVals, 0, >>> MULTI_MAX_FRACTIONS); >>> 309: float index_y = initGradient(paint); >>> 310: shader.setConstant("offset", index_y / MULTI_CACHE_SIZE + >>> HALF_TEXEL_Y); >> >> Here's another. > > index_y is a float, so the typecast is unnecessary Right. In this case I don't really see a problem. ------------- PR: https://git.openjdk.org/jfx/pull/960