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] http://www.clubSmalltalk.org
