On Mon, 6 Nov 2023 20:06:25 GMT, Phil Race <[email protected]> wrote:

>> @prrace By the way, how outdated is the comment that awt.dll should not rely 
>> on msvcp.dll? As far as I can tell we now always distribute msvcp.dll in the 
>> JDK, and it would help a lot if I could use the C++ Standard Library for 
>> this. Or could I statically link the CRT into awt.dll instead, if awt.dll 
>> really should not rely on msvcp.dll?
>
>> By the way, how outdated is the comment that awt.dll should not rely on 
>> msvcp.dll? As far as I can tell we now always distribute msvcp.dll in the 
>> JDK, and it would help a lot if I could use the C++ Standard Library for this
> 
> Do we ? I'm not sure why that is. We've previously tried hard to avoid that.
> Eg https://hg.openjdk.org/jdk9/jdk9/rev/f3c96aea372d
> 
> We should still stay away from it.
> 
> But it doesn't matter because the changes you are making aren't going in the 
> right direction.
> The root of the compiler complaints is the gotos isn't it ?
> So the code needs to be changed to not use gotos. I guess you do that but not 
> in a way I'd endorse
> But there are hundreds of those. I guess only a few trigger the warnings ?
> So your awt_Canvas example should end up looking something like this
> WARNING: I just edited in place, haven't built it, haven't tested it, it is 
> to show what the code should look like
> 
> 
> 
> void AwtCanvas::_SetEraseBackground(void *param)
> {
>     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
>                     
>     SetEraseBackgroundStruct *sebs = (SetEraseBackgroundStruct *)param;
>     jobject canvas = sebs->canvas;
>                     
>     if (canvas == NULL) {
>         env->ExceptionClear(); 
>         JNU_ThrowNullPointerException(env, "canvas");
>     } else {            
>         PDATA pData = JNI_GET_PDATA(canvas);
>         if (pData == NULL) {
>             env->DeleteGlobalRef(canvas);
>             THROW_NULL_PDATA_IF_NOT_DESTROYED(canvas);
>         } else {            
>             AwtCanvas *c = (AwtCanvas*)pData;
>             c->m_eraseBackground = sebs->doErase;
>             c->m_eraseBackgroundOnResize = sebs->doEraseOnResize;
>             env->DeleteGlobalRef(canvas);
>         }                   
>     }                        
>     delete sebs;            
> }

Bumping, @prrace?

-------------

PR Comment: https://git.openjdk.org/jdk/pull/15096#issuecomment-1809552512

Reply via email to