Andres,

gracias por la aclaración, es verdad es un tanto peligroso, aún así es
ampliamente usado, supongo que eso hace que a veces se informe cualquier
error.

Lo mismo pasa, y es mucho mas gracioso, con Float invalidOperation cuando
alguien interrumpe, realiza un calculo, no limpia los flags del coprocesador
y en Smalltalk nos da un error como si hubiera una Float exception.
Suele pasar bastante con los ocx.

Saludos
  GallegO

El 26 de agosto de 2010 16:03, Andres Valloud
<[email protected]>escribió:

> Como sabes si no hubo un process switch en Smalltalk a otro proceso con mas
> prioridad que el tuyo, y que ese proceso no llamo tambien a GetLastError()?
> Como sabes si la maquina virtual no llamo a GetLastError() por la suya para
> procesar eventos de red despues de llamar a SomeFunction() pero antes de
> volver a Smalltalk, por ejemplo?  El problema basico es que hacer
>
> | returnValue errorCode |
> returnValue := self callSomeFunction.
> returnValue = 0 ifFalse: [^value].
> errorCode := self callGetLastError.
> self functionFailedWith: errorCode
>
> no es atomico con respecto a process switches o a actividades de la maquina
> virtual.  Por lo tanto, en general es incorrecto (o por lo menos peligroso)
> llamar a GetLastError() directamente desde un FFI.
>
> Andres.
>
>
> 2010/8/26 GallegO <[email protected]>
>
> Andres:
>>
>> En la documentacion de GetLastError dice que es devuelve el ultimo error
>> en el thread que llama a la funcion. Qué posibilidades ves que en un
>> Smalltalk como Dolphin cambie el thread si la llamada a GetLastError se
>> produce un statement mas abajo?
>>
>> Saludos
>>   GallegO
>>
>> El 25 de agosto de 2010 18:28, Andres Valloud 
>> <[email protected]>escribió:
>>
>> En general no se puede* llamar explicitamente a GetLastError() desde un
>>> FFI porque puede suceder cualquier cosa entre las dos llamadas a funcion...
>>> si tenes a mano la ultima version de VisualWorks, fijate el ultimo apendice
>>> de la guia de DLLCC.  Hay un monton de otras cosas que tampoco se pueden*
>>> hacer.
>>>
>>> Andres.
>>>
>>> * por supuesto que se "puede", pero el problema es que no "funciona"
>>> :)...
>>>
>>> 2010/8/25 Juan <[email protected]>
>>>
>>> Kiko
>>>> Sera que se hizo otra llamada a otro mensaje que usa el SO? entonces te
>>>> cambia el valor del
>>>> getLastError?
>>>> se me ocurren 2 cosas.
>>>> 1)  que lo setees si mal no recurdo setLastError:
>>>> 2) que lo hagas dentro de un critical para q no te interrumpan
>>>>     el el scheduler.
>>>>
>>>> saludos
>>>> MDC
>>>>
>>>>
>>>>
>>>>
>>>> 2010/8/25 Jose Gregoris <[email protected]>
>>>>
>>>>  Hola
>>>>>
>>>>> En un ejemplo de OpenGL que estoy haciendo , tengo un error medio raro
>>>>> y no entiendo bien porque occurre.
>>>>> Para mejor entendimiento deberán mirar la captura que adjunto.
>>>>> El tema esta en este método:
>>>>>
>>>>> OpenGLLibrary>>createContext: aDCHandle
>>>>>     "The wglCreateContext function creates a new OpenGL rendering
>>>>> context,
>>>>>          which is suitable for drawing on the device   referenced    by
>>>>> hdc.
>>>>>          The rendering context has the same pixel format as the device
>>>>> context.."
>>>>>
>>>>>     | context error |
>>>>>     context := self wglCreateContext: aDCHandle.
>>>>>     error := KernelLibrary default getLastError.
>>>>>     context ifNil: [^self error: 'Can''t Create A GL Rendering Context.
>>>>> Error: ' , error printString].
>>>>>     ^context
>>>>>
>>>>>
>>>>> Luego de llamar a #wglCreateContext: este retorna  un contexto no
>>>>> valido "nil" y luego chequeo si hay algun error para poder informar.
>>>>> Pasa que ese chequeo retorna "0" como si no pasara nada, pero en
>>>>> realidad algo paso por lo que fallo  #wglCreateContext:
>>>>>
>>>>> Como se ve en la captura desde el debug intento de nuevo llamar a
>>>>> getLastError y hay si me retorna un error !!
>>>>>
>>>>> No tengo idea de porque pasa esto y me gustaría saber :)
>>>>>
>>>>> Es un error que parese ser de la librería Kernel, pero no sé.
>>>>> Alguna idea ?
>>>>>
>>>>> saludos kiko
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> To post to this group, send email to [email protected]
>>>>> To unsubscribe from this group, send email to
>>>>> [email protected]<clubsmalltalk%[email protected]>
>>>>>
>>>>> http://www.clubSmalltalk.org
>>>>
>>>>
>>>>  --
>>>> To post to this group, send email to [email protected]
>>>> To unsubscribe from this group, send email to
>>>> [email protected]<clubsmalltalk%[email protected]>
>>>>
>>>> http://www.clubSmalltalk.org
>>>>
>>>
>>>  --
>>> To post to this group, send email to [email protected]
>>> To unsubscribe from this group, send email to
>>> [email protected]<clubsmalltalk%[email protected]>
>>>
>>> http://www.clubSmalltalk.org
>>>
>>
>>  --
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]<clubsmalltalk%[email protected]>
>>
>> http://www.clubSmalltalk.org
>>
>
>  --
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]<clubsmalltalk%[email protected]>
>
> http://www.clubSmalltalk.org
>

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org

Responder a