[Pharo-project] Morpheas , bringing Morphic to Opengl (3d GUIs)
I have started my first project with Pharo (and hopefully Squeak too) called "Ephestos" . http://www.squeaksource.com/ephestos.html Ephestos is divided into 3 areas/ elements / concepts : a) Morpheas b) Proteas c) Orpheas Morpheas is an effort to bring Morphic to OpenGL and to implement 3d guis , that can be designed in blender ( probably will implement a addon exporter too from blender to Pharo) and deployed in Pharo , minimising coding and maximising ease of use, since a 3d gui can be fairly complex to program. The reason why I am posting here is for your help. I am very new to Pharo and smalltalk and Ephestos is an extremely ambitious project which I hope to be commited for at least the next 5-6 years which I plan to release version 1. My first rule is of course , because the project is already very ambitious, "code reuse". I want to be informed what efforts there have been towards that direction . Mr Stef published recently a great PDF document  titled "Pharo's Vision : Goals , Processes and Development effort" in it there is the following quote about Morphic "What have been done so far. Igor Stasenko did the following: ⢠Designed and implemented a new canvas API and all the necessary abstractions to generate adequate code for different backends. ⢠Deep integration to be able to inject frames into existing VMstructure (Igor can you confirmthis?) ⢠Designed and implemented a new textMorph, paragraph and other classes. ⢠Defined a default back-end. ⢠Defined a Cairo back-end. ⢠Defined an openGL back-end (using an OpenGL calling framework). " So I guess my question should be directed towards Igor, but maybe someone else also works in this. I am interested in any information about Morphic and OpenGL . I am also interested even on partial support of graphics engine like Irrlicht , Ogre and Open Cobalt. My main focuse is Nativeboost cause it appear to have a new enhance FFI, and of course the possibility of inline Assembly code.  Has anyone , advice , suggestions , ideas and hopefully some documentation I can use  ? I am already studying both OpenGL and Nativeboost / NBOpenGL .Â
Hi Dimitris, Your Ephestos sounds promising, can you post some screenshot as well or is too early? Also, can you explain us Proteas and Orpheas ... Best regards Janko S, dimitris chloupis piše:
I have started my first project with Pharo (and hopefully Squeak too) called "Ephestos" .
http://www.squeaksource.com/ephestos.html
Ephestos is divided into 3 areas/ elements / concepts : a) Morpheas b) Proteas c) Orpheas
Morpheas is an effort to bring Morphic to OpenGL and to implement 3d guis , that can be designed in blender ( probably will implement a addon exporter too from blender to Pharo) and deployed in Pharo , minimising coding and maximising ease of use, since a 3d gui can be fairly complex to program.
The reason why I am posting here is for your help. I am very new to Pharo and smalltalk and Ephestos is an extremely ambitious project which I hope to be commited for at least the next 5-6 years which I plan to release version 1.
My first rule is of course , because the project is already very ambitious, "code reuse". I want to be informed what efforts there have been towards that direction .
Mr Stef published recently a great PDF document titled "Pharo's Vision : Goals , Processes and Development effort" in it there is the following quote about Morphic
"What have been done so far. Igor Stasenko did the following: ⢠Designed and implemented a new canvas API and all the necessary abstractions to generate adequate code for different backends. ⢠Deep integration to be able to inject frames into existing VMstructure (Igor can you confirmthis?) ⢠Designed and implemented a new textMorph, paragraph and other classes. ⢠Defined a default back-end. ⢠Defined a Cairo back-end. ⢠Defined an openGL back-end (using an OpenGL calling framework). "
So I guess my question should be directed towards Igor, but maybe someone else also works in this. I am interested in any information about Morphic and OpenGL . I am also interested even on partial support of graphics engine like Irrlicht , Ogre and Open Cobalt.
My main focuse is Nativeboost cause it appear to have a new enhance FFI, and of course the possibility of inline Assembly code.
Has anyone , advice , suggestions , ideas and hopefully some documentation I can use ?
I am already studying both OpenGL and Nativeboost / NBOpenGL .
-- Janko Mivšek Svetovalec za informatiko Eranova d.o.o. Ljubljana, Slovenija www.eranova.si tel: 01 514 22 55 faks: 01 514 22 56 gsm: 031 674 565
There are no screenshots per se , the project is in "reading documentation and planning stage", but I have commited a small OpenGL morph that I have grabed from the croquet repo. Me and some other people at #squeak have been sucessful at embeding OpengGL context on screen or inside a morph widget. you can take a look at my friends Nehe tutorials in Squeak here http://www.youtube.com/watch?v=g_YOqIWCcLQ&feature=results_main&playnext=1&list=PLD9267CFBD988A751 I posted here to coordinate effort with all parties and make sure I make my project 100% compatible with existing Pharo and any future Pharo. Each concept is based on an Age that works like a cascade. The one depends on the other. So Proteas will need a stable, reliable and at least basic Morpheas. Proteus will be a visual programming environment taken to the next level. As you know already Pharo and smalltalk perform very well for visual programming. My idea is to take this abit further. An idea/theory I want to implement is my "LOD theory" . According to this idea, not only you can represnt code visualy but you can represent in a context that moves in Leves Of Detail. This way the user will be able to see a "bird's eye" vew of the code, visual, meaning graphical blocks / elements representing section of code which many contain several classes/ objects. The user will control the level of detail which you will able to see more and more deeply the structure of you code. Obviously code does not change, the way you view it changes and help you understand the connection even in nightmare scenarios like spaggeti code. That means that will implement several navigational tools for exploring these visualisation and all of them will depend on the 3d nature of Morpheas. Beside code visualisation I would like to take this theory in the actual inteface as well. For example LOD will appear to all tool like the debugger , system browser , TDD etc The user will be able to operate those tool in begineer / advanced and expert modes. Code will also be contstucted in a visual ways, obviously something similar to scratch or build your own blocks, however full acess to the language will be allowed. Have several ideas there how that is possible. Another important theory I want to test is my "real time context sensitive documentation". In a sense the screen will dedicate one 1/3 or 1/4 of its estate to a documentation column that will be there all the time unless the user decides to close it. The documentation will change according to what the user selects and types making external documentation redundant. This documentation will of course leverage class documentation strings but it migh extend the whole facility as well. Finally Proteas will operate through a 3d world powered by Morpheas Graphic Engine, in a style of an RPG game, making sure users around the world can interact , share code and even collab real time. The RPG game will offer challanges and tutorials to users and its an oportunity for me to practice my 3d skills. Obviously I will be borrowing alot of code from Open Cobalt since this part overlaps in that area. Orpheas will be completely made via Proteas and of course Morpheas as a proof of concept. It will be a DAW GUI for Supercollider. A DAW is a Digital Audio Workstaion , its a professional Music software which has tracks, mixers , eq, audio effects and anything a musician needs to create polished music tracks. I will use Supercollider as the main engine here , supercollider is an extremely power audio server that can perform complicate and sophisticate functions on audio and music by receiving OSC messages. So you can say that audio wise Opheas will do nothing more than calling Supercollider functions. You can find Supercollider here http://supercollider.sourceforge.net/ Orpheas will follow Ableton Live as a design model http://www.ableton.com/ My plan is 2 year for Morpheas then another 2 years for Proteas and then another 2 years for Orpheas. But its not a strict plan as I said I am still in planning phase and anything can happen. Hopefull I can get other people to work on it too, but for the time being I will be alone making sure there is some gravity on my claims. My goal obviously because the project is too ambitious and its pure insanity to implement all those features by myself is to borrow as much as I can existing code and reuse it.  I have many ideas, but I am aware that putting ideas to practice is "abit" harder than one thinks. Will see how it goes for the time being my only concetration is Morpheas and how well opengl can work inside Pharo. So anyone who can help me with an advice or a couple of links will provide me with some very valuable help. ________________________________ From: Janko Mivšek <janko.mivsek@eranova.si> To: Pharo-project@lists.gforge.inria.fr; dimitris chloupis <thekilon@yahoo.co.uk> Sent: Monday, 30 January 2012, 15:58 Subject: Re: [Pharo-project] Morpheas , bringing Morphic to Opengl (3d GUIs) Hi Dimitris, Your Ephestos sounds promising, can you post some screenshot as well or is too early? Also, can you explain us Proteas and Orpheas ... Best regards Janko S, dimitris chloupis piše:
I have started my first project with Pharo (and hopefully Squeak too) called "Ephestos" .
http://www.squeaksource.com/ephestos.html
Ephestos is divided into 3 areas/ elements / concepts : a) Morpheas b) Proteas c) Orpheas
Morpheas is an effort to bring Morphic to OpenGL and to implement 3d guis , that can be designed in blender ( probably will implement a addon exporter too from blender to Pharo) and deployed in Pharo , minimising coding and maximising ease of use, since a 3d gui can be fairly complex to program.
The reason why I am posting here is for your help. I am very new to Pharo and smalltalk and Ephestos is an extremely ambitious project which I hope to be commited for at least the next 5-6 years which I plan to release version 1.
My first rule is of course , because the project is already very ambitious, "code reuse". I want to be informed what efforts there have been towards that direction .
Mr Stef published recently a great PDF document titled "Pharo's Vision : Goals , Processes and Development effort" in it there is the following quote about Morphic
"What have been done so far. Igor Stasenko did the following: ⢠Designed and implemented a new canvas API and all the necessary abstractions to generate adequate code for different backends. ⢠Deep integration to be able to inject frames into existing VMstructure (Igor can you confirmthis?) ⢠Designed and implemented a new textMorph, paragraph and other classes. ⢠Defined a default back-end. ⢠Defined a Cairo back-end. ⢠Defined an openGL back-end (using an OpenGL calling framework). "
So I guess my question should be directed towards Igor, but maybe someone else also works in this. I am interested in any information about Morphic and OpenGL . I am also interested even on partial support of graphics engine like Irrlicht , Ogre and Open Cobalt.
My main focuse is Nativeboost cause it appear to have a new enhance FFI, and of course the possibility of inline Assembly code.Â
Has anyone , advice , suggestions , ideas and hopefully some documentation I can use ?
I am already studying both OpenGL and Nativeboost / NBOpenGL .
-- Janko Mivšek Svetovalec za informatiko Eranova d.o.o. Ljubljana, Slovenija www.eranova.si tel: 01 514 22 55 faks: 01 514 22 56 gsm: 031 674 565
Too ambitious. I am too old for this ( being there, ate that ), but you can try :) And you have my full support. I am currently writing documentation to cover different aspects of NativeBoost. And of course, i continue my work on Athens, Cairo and NBOpenGL.. someone please lend me the day-stretcher , to have 48 hours/day :) On 30 January 2012 15:55, dimitris chloupis <thekilon@yahoo.co.uk> wrote:
There are no screenshots per se , the project is in "reading documentation and planning stage", but I have commited a small OpenGL morph that I have grabed from the croquet repo. Me and some other people at #squeak have been sucessful at embeding OpengGL context on screen or inside a morph widget.
you can take a look at my friends Nehe tutorials in Squeak here
http://www.youtube.com/watch?v=g_YOqIWCcLQ&feature=results_main&playnext=1&l...
I posted here to coordinate effort with all parties and make sure I make my project 100% compatible with existing Pharo and any future Pharo.
Each concept is based on an Age that works like a cascade. The one depends on the other.
So Proteas will need a stable, reliable and at least basic Morpheas. Proteus will be a visual programming environment taken to the next level. As you know already Pharo and smalltalk perform very well for visual programming. My idea is to take this abit further.
An idea/theory I want to implement is my "LOD theory" . According to this idea, not only you can represnt code visualy but you can represent in a context that moves in Leves Of Detail. This way the user will be able to see a "bird's eye" vew of the code, visual, meaning graphical blocks / elements representing section of code which many contain several classes/ objects. The user will control the level of detail which you will able to see more and more deeply the structure of you code. Obviously code does not change, the way you view it changes and help you understand the connection even in nightmare scenarios like spaggeti code. That means that will implement several navigational tools for exploring these visualisation and all of them will depend on the 3d nature of Morpheas.
Beside code visualisation I would like to take this theory in the actual inteface as well. For example LOD will appear to all tool like the debugger , system browser , TDD etc The user will be able to operate those tool in begineer / advanced and expert modes.
Code will also be contstucted in a visual ways, obviously something similar to scratch or build your own blocks, however full acess to the language will be allowed. Have several ideas there how that is possible.
Another important theory I want to test is my "real time context sensitive documentation". In a sense the screen will dedicate one 1/3 or 1/4 of its estate to a documentation column that will be there all the time unless the user decides to close it. The documentation will change according to what the user selects and types making external documentation redundant. This documentation will of course leverage class documentation strings but it migh extend the whole facility as well.
Finally Proteas will operate through a 3d world powered by Morpheas Graphic Engine, in a style of an RPG game, making sure users around the world can interact , share code and even collab real time. The RPG game will offer challanges and tutorials to users and its an oportunity for me to practice my 3d skills. Obviously I will be borrowing alot of code from Open Cobalt since this part overlaps in that area.
Orpheas will be completely made via Proteas and of course Morpheas as a proof of concept. It will be a DAW GUI for Supercollider.
A DAW is a Digital Audio Workstaion , its a professional Music software which has tracks, mixers , eq, audio effects and anything a musician needs to create polished music tracks. I will use Supercollider as the main engine here , supercollider is an extremely power audio server that can perform complicate and sophisticate functions on audio and music by receiving OSC messages. So you can say that audio wise Opheas will do nothing more than calling Supercollider functions.
You can find Supercollider here
http://supercollider.sourceforge.net/
Orpheas will follow Ableton Live as a design model
My plan is 2 year for Morpheas then another 2 years for Proteas and then another 2 years for Orpheas. But its not a strict plan as I said I am still in planning phase and anything can happen. Hopefull I can get other people to work on it too, but for the time being I will be alone making sure there is some gravity on my claims.
My goal obviously because the project is too ambitious and its pure insanity to implement all those features by myself is to borrow as much as I can existing code and reuse it. Â I have many ideas, but I am aware that putting ideas to practice is "abit" harder than one thinks. Will see how it goes for the time being my only concetration is Morpheas and how well opengl can work inside Pharo.
So anyone who can help me with an advice or a couple of links will provide me with some very valuable help.
________________________________ From: Janko Mivšek <janko.mivsek@eranova.si> To: Pharo-project@lists.gforge.inria.fr; dimitris chloupis <thekilon@yahoo.co.uk> Sent: Monday, 30 January 2012, 15:58 Subject: Re: [Pharo-project] Morpheas , bringing Morphic to Opengl (3d GUIs)
Hi Dimitris,
Your Ephestos sounds promising, can you post some screenshot as well or is too early? Also, can you explain us Proteas and Orpheas ...
Best regards Janko
S, dimitris chloupis piše:
I have started my first project with Pharo (and hopefully Squeak too) called "Ephestos" .
http://www.squeaksource.com/ephestos.html
Ephestos is divided into 3 areas/ elements / concepts : a) Morpheas b) Proteas c) Orpheas
Morpheas is an effort to bring Morphic to OpenGL and to implement 3d guis , that can be designed in blender ( probably will implement a addon exporter too from blender to Pharo) and deployed in Pharo , minimising coding and maximising ease of use, since a 3d gui can be fairly complex to program.
The reason why I am posting here is for your help. I am very new to Pharo and smalltalk and Ephestos is an extremely ambitious project which I hope to be commited for at least the next 5-6 years which I plan to release version 1.
My first rule is of course , because the project is already very ambitious, "code reuse". I want to be informed what efforts there have been towards that direction .
Mr Stef published recently a great PDF document titled "Pharo's Vision : Goals , Processes and Development effort" in it there is the following quote about Morphic
"What have been done so far. Igor Stasenko did the following: ⢠Designed and implemented a new canvas API and all the necessary abstractions to generate adequate code for different backends. ⢠Deep integration to be able to inject frames into existing VMstructure (Igor can you confirmthis?) ⢠Designed and implemented a new textMorph, paragraph and other classes. ⢠Defined a default back-end. ⢠Defined a Cairo back-end. ⢠Defined an openGL back-end (using an OpenGL calling framework). "
So I guess my question should be directed towards Igor, but maybe someone else also works in this. I am interested in any information about Morphic and OpenGL . I am also interested even on partial support of graphics engine like Irrlicht , Ogre and Open Cobalt.
My main focuse is Nativeboost cause it appear to have a new enhance FFI, and of course the possibility of inline Assembly code.
Has anyone , advice , suggestions , ideas and hopefully some documentation I can use ?
I am already studying both OpenGL and Nativeboost / NBOpenGL .
-- Janko Mivšek Svetovalec za informatiko Eranova d.o.o. Ljubljana, Slovenija www.eranova.si tel: 01 514 22 55 faks: 01 514 22 56 gsm: 031 674 565
-- Best regards, Igor Stasenko.
No No No .... I am not asking you to code a line for me or anyone else in here. I am not fishing for coders  , or want people to code for my "super cool" project . At least not until I can provide substantial code to back up my claims. "Too ambitious" is a very polite way to put it, "pure insanity" is more like it : D I am a 32 years old coder, I have been coding for fun for 23 years now and I dont consider myself a very good coder. So I have a very good idea what I am getting myself into and I dont want to drag anyone with me. But I was dreaming for this all my life so one day I woke up and said "what the heck" even if I can make 1% of this reality I will be very happy. And if I dont, then I will certainly have alot of fun in the process. So exactly what you do now, is exactly what I need. Documentation, Documentation and you guessed it more Documentation.  So I fire up the very first question . Where I can find documentation for nativeboost and NBOpenGL ? I am also interested in the new FFI. By the way Igor thank you for your amazing work so far with anything you have done. I only hope my project be able to give you back something as good u one of the things you have given us. ________________________________ From: Igor Stasenko <siguctua@gmail.com> To: Pharo-project@lists.gforge.inria.fr; dimitris chloupis <thekilon@yahoo.co.uk> Cc: Janko Mivšek <janko.mivsek@eranova.si> Sent: Monday, 30 January 2012, 17:29 Subject: Re: [Pharo-project] Morpheas , bringing Morphic to Opengl (3d GUIs) Too ambitious. I am too old for this ( being there, ate that ), but you can try :) And you have my full support. I am currently writing documentation to cover different aspects of NativeBoost. And of course, i continue my work on Athens, Cairo and NBOpenGL.. someone please lend me the day-stretcher , to have 48 hours/day :) On 30 January 2012 15:55, dimitris chloupis <thekilon@yahoo.co.uk> wrote:
There are no screenshots per se , the project is in "reading documentation and planning stage", but I have commited a small OpenGL morph that I have grabed from the croquet repo. Me and some other people at #squeak have been sucessful at embeding OpengGL context on screen or inside a morph widget.
you can take a look at my friends Nehe tutorials in Squeak here
http://www.youtube.com/watch?v=g_YOqIWCcLQ&feature=results_main&playnext=1&l...
I posted here to coordinate effort with all parties and make sure I make my project 100% compatible with existing Pharo and any future Pharo.
Each concept is based on an Age that works like a cascade. The one depends on the other.
So Proteas will need a stable, reliable and at least basic Morpheas. Proteus will be a visual programming environment taken to the next level. As you know already Pharo and smalltalk perform very well for visual programming. My idea is to take this abit further.
An idea/theory I want to implement is my "LOD theory" . According to this idea, not only you can represnt code visualy but you can represent in a context that moves in Leves Of Detail. This way the user will be able to see a "bird's eye" vew of the code, visual, meaning graphical blocks / elements representing section of code which many contain several classes/ objects. The user will control the level of detail which you will able to see more and more deeply the structure of you code. Obviously code does not change, the way you view it changes and help you understand the connection even in nightmare scenarios like spaggeti code. That means that will implement several navigational tools for exploring these visualisation and all of them will depend on the 3d nature of Morpheas.
Beside code visualisation I would like to take this theory in the actual inteface as well. For example LOD will appear to all tool like the debugger , system browser , TDD etc The user will be able to operate those tool in begineer / advanced and expert modes.
Code will also be contstucted in a visual ways, obviously something similar to scratch or build your own blocks, however full acess to the language will be allowed. Have several ideas there how that is possible.
Another important theory I want to test is my "real time context sensitive documentation". In a sense the screen will dedicate one 1/3 or 1/4 of its estate to a documentation column that will be there all the time unless the user decides to close it. The documentation will change according to what the user selects and types making external documentation redundant. This documentation will of course leverage class documentation strings but it migh extend the whole facility as well.
Finally Proteas will operate through a 3d world powered by Morpheas Graphic Engine, in a style of an RPG game, making sure users around the world can interact , share code and even collab real time. The RPG game will offer challanges and tutorials to users and its an oportunity for me to practice my 3d skills. Obviously I will be borrowing alot of code from Open Cobalt since this part overlaps in that area.
Orpheas will be completely made via Proteas and of course Morpheas as a proof of concept. It will be a DAW GUI for Supercollider.
A DAW is a Digital Audio Workstaion , its a professional Music software which has tracks, mixers , eq, audio effects and anything a musician needs to create polished music tracks. I will use Supercollider as the main engine here , supercollider is an extremely power audio server that can perform complicate and sophisticate functions on audio and music by receiving OSC messages. So you can say that audio wise Opheas will do nothing more than calling Supercollider functions.
You can find Supercollider here
http://supercollider.sourceforge.net/
Orpheas will follow Ableton Live as a design model
My plan is 2 year for Morpheas then another 2 years for Proteas and then another 2 years for Orpheas. But its not a strict plan as I said I am still in planning phase and anything can happen. Hopefull I can get other people to work on it too, but for the time being I will be alone making sure there is some gravity on my claims.
My goal obviously because the project is too ambitious and its pure insanity to implement all those features by myself is to borrow as much as I can existing code and reuse it. Â I have many ideas, but I am aware that putting ideas to practice is "abit" harder than one thinks. Will see how it goes for the time being my only concetration is Morpheas and how well opengl can work inside Pharo.
So anyone who can help me with an advice or a couple of links will provide me with some very valuable help.
________________________________ From: Janko Mivšek <janko.mivsek@eranova.si> To: Pharo-project@lists.gforge.inria.fr; dimitris chloupis <thekilon@yahoo.co.uk> Sent: Monday, 30 January 2012, 15:58 Subject: Re: [Pharo-project] Morpheas , bringing Morphic to Opengl (3d GUIs)
Hi Dimitris,
Your Ephestos sounds promising, can you post some screenshot as well or is too early? Also, can you explain us Proteas and Orpheas ...
Best regards Janko
S, dimitris chloupis piše:
I have started my first project with Pharo (and hopefully Squeak too) called "Ephestos" .
http://www.squeaksource.com/ephestos.html
Ephestos is divided into 3 areas/ elements / concepts : a) Morpheas b) Proteas c) Orpheas
Morpheas is an effort to bring Morphic to OpenGL and to implement 3d guis , that can be designed in blender ( probably will implement a addon exporter too from blender to Pharo) and deployed in Pharo , minimising coding and maximising ease of use, since a 3d gui can be fairly complex to program.
The reason why I am posting here is for your help. I am very new to Pharo and smalltalk and Ephestos is an extremely ambitious project which I hope to be commited for at least the next 5-6 years which I plan to release version 1.
My first rule is of course , because the project is already very ambitious, "code reuse". I want to be informed what efforts there have been towards that direction .
Mr Stef published recently a great PDF document titled "Pharo's Vision : Goals , Processes and Development effort" in it there is the following quote about Morphic
"What have been done so far. Igor Stasenko did the following: ⢠Designed and implemented a new canvas API and all the necessary abstractions to generate adequate code for different backends. ⢠Deep integration to be able to inject frames into existing VMstructure (Igor can you confirmthis?) ⢠Designed and implemented a new textMorph, paragraph and other classes. ⢠Defined a default back-end. ⢠Defined a Cairo back-end. ⢠Defined an openGL back-end (using an OpenGL calling framework). "
So I guess my question should be directed towards Igor, but maybe someone else also works in this. I am interested in any information about Morphic and OpenGL . I am also interested even on partial support of graphics engine like Irrlicht , Ogre and Open Cobalt.
My main focuse is Nativeboost cause it appear to have a new enhance FFI, and of course the possibility of inline Assembly code.
Has anyone , advice , suggestions , ideas and hopefully some documentation I can use ?
I am already studying both OpenGL and Nativeboost / NBOpenGL .
-- Janko Mivšek Svetovalec za informatiko Eranova d.o.o. Ljubljana, Slovenija www.eranova.si tel: 01 514 22 55 faks: 01 514 22 56 gsm: 031 674 565
-- Best regards, Igor Stasenko.
On 30 January 2012 17:42, dimitris chloupis <thekilon@yahoo.co.uk> wrote:
No No No .... I am not asking you to code a line for me or anyone else in here. I am not fishing for coders  , or want people to code for my "super cool" project . At least not until I can provide substantial code to back up my claims.
I am not proposing to help with coding your actual project, i just providing a support for NativeBoost and NBOpenGL, in case if you choose them to use.
"Too ambitious" is a very polite way to put it, "pure insanity" is more like it : D
It is not insanity. My first small project when i joined squeak community were GLCanvas, so i am also kind of infected with weird ideas of implementing a novel UIs using opengl and smalltalk. But road is long, and needs to be walked.. and waking with party is much easier and fun.
I am a 32 years old coder, I have been coding for fun for 23 years now and I dont consider myself a very good coder. So I have a very good idea what I am getting myself into and I dont want to drag anyone with me. But I was dreaming for this all my life so one day I woke up and said "what the heck" even if I can make 1% of this reality I will be very happy. And if I dont, then I will certainly have alot of fun in the process.
So exactly what you do now, is exactly what I need. Documentation, Documentation and you guessed it more Documentation. Â So I fire up the very first question .
Where I can find documentation for nativeboost and NBOpenGL ? I am also interested in the new FFI.
right now, most of it on http://code.google.com/p/nativeboost/w/list we're also writing a book chapter about it, https://gforge.inria.fr/scm/viewvc.php/*checkout*/PharoByExampleTwo-Eng/Alie... which is work in progress. it is more introductory-style guide. also i started writing more like 'reference' style help, which will be available right in the image using help system
By the way Igor thank you for your amazing work so far with anything you have done. I only hope my project be able to give you back something as good u one of the things you have given us.
thanks for valuing my effort :) but frankly my opinion about my work is not that high -- Best regards, Igor Stasenko.
I am not proposing to help with coding your actual project, i just providing a support for NativeBoost and NBOpenGL, in case if you choose them to use.
I did not say that. I thought you thought I was asking for help with the coding. Yeap that exactly what I asked from you, support on NB and NBOGL , mainly documentation and potential bug fixes. Thats all.Â
It is not insanity. My first small project when i joined squeak community were
GLCanvas, so i am also kind of infected with weird ideas of implementing a novel UIs using opengl and smalltalk. But road is long, and needs to be walked.. and waking with party is much easier and fun.
I realise that , however I have a very specific vision of what I want to achieve. I am doing this only on the grounds of enjoyment and not end result. But If I can found people with their own vision and with a similar path to mine, I have no issue to join forces with them. Actually several people seem to want a port Morphic to OGL and I am already with communication with them via #squeak at freenode.net (currently there are 3 of us) so yes I welcome it as an option to have a high level of cooperation on the subject. Â I hope this thread to be a motivation for all of us OGL to join code. On the other hand thats not up to me only ;)
right now, most of it on http://code.google.com/p/nativeboost/w/list we're also writing a book chapter about it,  https://gforge.inria.fr/scm/viewvc.php/*checkout*/PharoByExampleTwo-Eng/Alie... which is work in progress.
ah lovely , of course I am aware of your wiki but I was not aware of the PBE chapter and the on-board reference.
thanks for valuing my effort :) but frankly my opinion about my work is not that high
Well maybe my project and other projects that will use NBOGL will change your mind one day ;)Â I will back with further questions
I wanted to ask if NB and COG will support windows as well, I see no windows build. and here we go with first problem. I am in linux mint 12 32 bit with a graphic card NVIDIA GEFORCE 6200 . I got Cog VM with the Nativeboost plugin + Pharo 1.4 image + Nativeboost + NBOpenGL This is my workspace ---- Gofer it     squeaksource: 'NativeBoost';     package: 'NativeBoost-Installer';     load. NBInstaller install. Gofer it     squeaksource: 'NBOpenGL';     package: 'ConfigurationOfNBOpenGL';     load. ConfigurationOfNBOpenGL project lastVersion load. test := (GLTTRenderingDemo new) openInWorld; yourself. --- the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL Here is all debug info ---- 31 January 2012 11:27:51 am VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-IgorStasenko.8 uuid: f47ef546-de3d-4415-850e-6437d67bfb5c Aug  9 2011, StackToRegisterMappingCogit VMMaker-oscog-IgorStasenko.108 uuid: 384f4108-f1f4-4954-8357-0b3005cb81e2 Aug  9 2011, https://git.gitorious.org/cogvm/blessed.git Commit: f6deabba4432fa22b767dc17718a0fb84c9f3e88 Date: Tue Aug 9 14:47:19 2011 +0200 By: Igor Stasenko <siguctua@gmail.com> Image: Pharo1.4a [Latest update: #14284] NBGLContextDriver class(Object)>>error: Receiver: NBGLContextDriver Arguments and temporary variables: aString: 'No suitable implementation found for initializing OpenGL context for ...etc... Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses: {NBMacGLContextDriver} name: #NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil [self error: 'No suitable implementation found for initializing OpenGL context for your platform'] in NBGLContextDriver class>>forCurrentPlatform Receiver: NBGLContextDriver Arguments and temporary variables: Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses: {NBMacGLContextDriver} name: #NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil OrderedCollection(Collection)>>detect:ifNone: Receiver: an OrderedCollection(NBMacGLContextDriver) Arguments and temporary variables: aBlock: [:cls | cls supportsCurrentPlatform] exceptionBlock: [self error: 'No suitable implementation found for initializing...etc... Receiver's instance variables: array: {NBMacGLContextDriver} firstIndex: 1 lastIndex: 1 NBGLContextDriver class>>forCurrentPlatform Receiver: NBGLContextDriver Arguments and temporary variables: driver: nil Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses: {NBMacGLContextDriver} name: #NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil NBGLContextDriver class>>createContext: Receiver: NBGLContextDriver Arguments and temporary variables: initialExtent: (50@40) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses: {NBMacGLContextDriver} name: #NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil NBGLDisplay class>>extent: Receiver: NBGLDisplay Arguments and temporary variables: anInitialExtent: (50@40) driver: nil extensions: nil disp: nil ext: (50@40) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#canUseForm:->(NBGLDisplay>>#canUseForm: "a Comp...etc... format: 136 instanceVariables: #('session' 'extent' 'driver') organization: ('reading pixels' canUseForm: updateForm:bounds:) ('viewport' cha...etc... subclasses: {NBMSAAOffscreenDisplay. NBOffscreenDisplay} name: #NBGLDisplay classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil GLTTRenderingDemo(GLViewportMorph)>>initializeForNewSession Receiver: a GLTTRenderingDemo(979369984) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (987496448) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil GLTTRenderingDemo>>initializeForNewSession Receiver: a GLTTRenderingDemo(979369984) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (987496448) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil GLTTRenderingDemo(GLViewportMorph)>>initialize Receiver: a GLTTRenderingDemo(979369984) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (987496448) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil GLTTRenderingDemo>>initialize Receiver: a GLTTRenderingDemo(979369984) Arguments and temporary variables: fontPath: nil Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (987496448) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil GLTTRenderingDemo class(Behavior)>>new Receiver: GLTTRenderingDemo Arguments and temporary variables: Receiver's instance variables: superclass: GLViewportMorph methodDict: a MethodDictionary(#initialize->(GLTTRenderingDemo>>#initialize "a ...etc... format: 158 instanceVariables: #('d' 'glyphCache' 'font' 'curveRenderer') organization: ('as yet unclassified' initialize initializeForNewSession openInW...etc... subclasses: nil name: #GLTTRenderingDemo classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Morphic-Demo' traitComposition: {} localSelectors: nil UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil Compiler>>evaluate:in:to:notifying:ifFail:logged: Receiver: a Compiler Arguments and temporary variables: textOrStream: a ReadWriteStream aContext: nil receiver: nil aRequestor: a TextMorphForEditView(50593792) failBlock: [self morph flash. ^ nil] logFlag: true methodNode: DoIt ^ test := GLTTRenderingDemo new openInWorld; yourself method: (UndefinedObject>>#DoIt "a CompiledMethod(970457088)") value: nil toLog: nil itsSelection: nil itsSelectionString: nil Receiver's instance variables: sourceStream: a ReadWriteStream requestor: a TextMorphForEditView(50593792) class: UndefinedObject category: nil context: nil parser: a Parser [rcvr class evaluatorClass new evaluate: self selectionForDoitAsStream in: ctxt to: rcvr notifying: self morph ifFail: [self morph flash. ^ nil] logged: true] in SmalltalkEditor>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(50593792) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState BlockClosure>>on:do: Receiver: [rcvr class evaluatorClass new evaluate: self selectionForDoitAsStream in: ctxt to: ...etc... Arguments and temporary variables: exception: OutOfScopeNotification handlerAction: [:ex | ex resume: true] handlerActive: true Receiver's instance variables: outerContext: SmalltalkEditor>>evaluateSelectionAndDo: startpc: 110 numArgs: 0 SmalltalkEditor>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [:result | result] result: nil rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(50593792) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor>>evaluateSelection Receiver: a SmalltalkEditor Arguments and temporary variables: Receiver's instance variables: morph: a TextMorphForEditView(50593792) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState [textMorph editor evaluateSelection] in PluggableTextMorph>>doIt Receiver: a PluggableTextMorph(268173312) Arguments and temporary variables: Receiver's instance variables: bounds: (509.0@25.0) corner: (951.0@388.0) owner: a SystemWindow(672137216) submorphs: an Array(a TransformMorph(428343296)) fullBounds: (509@25) corner: (951@388) color: (Color r: 0.804 g: 0.864 b: 0.857) extension: a MorphExtension (45350912) [locked] borderWidth: 1 borderColor: #inset model: a Workspace open: false accessor: nil scrollBar: a ScrollBar(274989056) scroller: a TransformMorph(428343296) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #codePaneMenu:shifted: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(668205056) textMorph: a TextMorphForEditView(50593792) getTextSelector: #contents setTextSelector: #acceptContents: getSelectionSelector: nil hasUnacceptedEdits: true askBeforeDiscardingEdits: true selectionInterval: (1 to: 333) hasEditingConflicts: false acceptAction: nil getColorSelector: nil unstyledAcceptText: nil styler: a SHTextStylerST80 autoAccept: nil enabled: true getEnabledSelector: nil highlights: an OrderedCollection() acceptOnFocusChange: nil selectionColor: nil alwaysAccept: nil changedAction: nil [result := editBlock value] in PluggableTextMorph>>handleEdit: Receiver: a PluggableTextMorph(268173312) Arguments and temporary variables: editBlock: [textMorph editor evaluateSelection] result: #(nil) Receiver's instance variables: bounds: (509.0@25.0) corner: (951.0@388.0) owner: a SystemWindow(672137216) submorphs: an Array(a TransformMorph(428343296)) fullBounds: (509@25) corner: (951@388) color: (Color r: 0.804 g: 0.864 b: 0.857) extension: a MorphExtension (45350912) [locked] borderWidth: 1 borderColor: #inset model: a Workspace open: false accessor: nil scrollBar: a ScrollBar(274989056) scroller: a TransformMorph(428343296) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #codePaneMenu:shifted: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(668205056) textMorph: a TextMorphForEditView(50593792) getTextSelector: #contents setTextSelector: #acceptContents: getSelectionSelector: nil hasUnacceptedEdits: true askBeforeDiscardingEdits: true selectionInterval: (1 to: 333) hasEditingConflicts: false acceptAction: nil getColorSelector: nil unstyledAcceptText: nil styler: a SHTextStylerST80 autoAccept: nil enabled: true getEnabledSelector: nil highlights: an OrderedCollection() acceptOnFocusChange: nil selectionColor: nil alwaysAccept: nil changedAction: nil TextMorphForEditView(TextMorph)>>handleEdit: Receiver: a TextMorphForEditView(50593792) Arguments and temporary variables: editBlock: [result := editBlock value] Receiver's instance variables: bounds: (0@0) corner: (434@274) owner: a TransformMorph(428343296) submorphs: #() fullBounds: (0@0) corner: (434@274) color: Color black extension: a MorphExtension (70778880) [other:  (blinkStart -> 2690020) (myDepe...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'Gofer it     squeaksource: ''NativeBoost'';     packa...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editView: a PluggableTextMorph(268173312) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil PluggableTextMorph>>handleEdit: Receiver: a PluggableTextMorph(268173312) Arguments and temporary variables: editBlock: [textMorph editor evaluateSelection] result: #(nil) Receiver's instance variables: bounds: (509.0@25.0) corner: (951.0@388.0) owner: a SystemWindow(672137216) submorphs: an Array(a TransformMorph(428343296)) fullBounds: (509@25) corner: (951@388) color: (Color r: 0.804 g: 0.864 b: 0.857) extension: a MorphExtension (45350912) [locked] borderWidth: 1 borderColor: #inset model: a Workspace open: false accessor: nil scrollBar: a ScrollBar(274989056) scroller: a TransformMorph(428343296) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #codePaneMenu:shifted: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(668205056) textMorph: a TextMorphForEditView(50593792) getTextSelector: #contents setTextSelector: #acceptContents: getSelectionSelector: nil hasUnacceptedEdits: true askBeforeDiscardingEdits: true selectionInterval: (1 to: 333) hasEditingConflicts: false acceptAction: nil getColorSelector: nil unstyledAcceptText: nil styler: a SHTextStylerST80 autoAccept: nil enabled: true getEnabledSelector: nil highlights: an OrderedCollection() acceptOnFocusChange: nil selectionColor: nil alwaysAccept: nil changedAction: nil PluggableTextMorph>>doIt Receiver: a PluggableTextMorph(268173312) Arguments and temporary variables: Receiver's instance variables: bounds: (509.0@25.0) corner: (951.0@388.0) owner: a SystemWindow(672137216) submorphs: an Array(a TransformMorph(428343296)) fullBounds: (509@25) corner: (951@388) color: (Color r: 0.804 g: 0.864 b: 0.857) extension: a MorphExtension (45350912) [locked] borderWidth: 1 borderColor: #inset model: a Workspace open: false accessor: nil scrollBar: a ScrollBar(274989056) scroller: a TransformMorph(428343296) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #codePaneMenu:shifted: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(668205056) textMorph: a TextMorphForEditView(50593792) getTextSelector: #contents setTextSelector: #acceptContents: getSelectionSelector: nil hasUnacceptedEdits: true askBeforeDiscardingEdits: true selectionInterval: (1 to: 333) hasEditingConflicts: false acceptAction: nil getColorSelector: nil unstyledAcceptText: nil styler: a SHTextStylerST80 autoAccept: nil enabled: true getEnabledSelector: nil highlights: an OrderedCollection() acceptOnFocusChange: nil selectionColor: nil alwaysAccept: nil changedAction: nil Workspace(StringHolder)>>perform:orSendTo: Receiver: a Workspace Arguments and temporary variables: selector: #doIt otherTarget: a PluggableTextMorph(268173312) Receiver's instance variables: dependents: a DependentsArray(a SystemWindow(672137216) a PluggableTextMorph(26...etc... contents: '' bindings: a Dictionary('test'->nil ) acceptDroppedMorphs: false acceptAction: nil mustDeclareVariables: false fileName: nil lineEnding: #lf encoding: 'utf-8' stylingActive: true [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]. self changed] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: evt: [(560@321) mouseUp 828114 nil] selArgCount: 2 Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil BlockClosure>>ensure: Receiver: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector...etc... Arguments and temporary variables: aBlock: [oldcursor show] complete: nil returnValue: nil Receiver's instance variables: outerContext: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: startpc: 160 numArgs: 0 CursorWithMask(Cursor)>>showWhile: Receiver: ((CursorWithMask extent: (16@16) depth: 1 fromArray: #( 2r0 2r100000000000000000000...etc... Arguments and temporary variables: aBlock: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [targe...etc... oldcursor: ((CursorWithMask extent: (16@16) depth: 1 fromArray: #( 2r0 2...etc... Receiver's instance variables: bits: a Bitmap of length 16 width: 16 height: 16 depth: 1 offset: (-1@ -1) maskForm: Form(16x16x1) ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: evt: [(560@321) mouseUp 828114 nil] w: a PasteUpMorph(425197568) [world] Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: evt: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil MouseButtonEvent>>sentTo: Receiver: [(560@321) mouseUp 828114 nil] Arguments and temporary variables: anObject: a ToggleMenuItemMorph(287309824)'Do it (d)' Receiver's instance variables: timeStamp: 828114 source: a HandMorph(843055104) windowIndex: nil type: #mouseUp buttons: 0 position: (560@321) handler: nil wasHandled: true whichButton: 4 ToggleMenuItemMorph(Morph)>>handleEvent: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil MorphicEventDispatcher>>dispatchDefault:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] aMorph: a ToggleMenuItemMorph(287309824)'Do it (d)' localEvt: nil index: 1 child: nil morphs: #() inside: true Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] aMorph: a ToggleMenuItemMorph(287309824)'Do it (d)' Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with: ToggleMenuItemMorph(Morph)>>processEvent:using: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] defaultDispatcher: a MorphicEventDispatcher Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil MorphicEventDispatcher>>dispatchDefault:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] aMorph: a MenuMorph(954466304) localEvt: [(560@321) mouseUp 828114 nil] index: 1 child: a ToggleMenuItemMorph(287309824)'Do it (d)' morphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuItemMo...etc... inside: false Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] aMorph: a MenuMorph(954466304) Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with: MenuMorph(Morph)>>processEvent:using: Receiver: a MenuMorph(954466304) Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] defaultDispatcher: a MorphicEventDispatcher Receiver's instance variables: bounds: (537.0@306.0) corner: (682.0@644.0) owner: nil submorphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuIte...etc... fullBounds: (537.0@306.0) corner: (683.0@645.0) color: (Color r: 0.775 g: 0.775 b: 0.775) extension: a MorphExtension (958136320) [other:  (basicColor -> Color lightGray...etc... borderWidth: 1 borderColor: Color gray defaultTarget: a Workspace selectedItem: a ToggleMenuItemMorph(287309824)'Do it (d)' stayUp: false popUpOwner: nil activeSubMenu: nil activatorDockingBar: nil embeddable: nil menuItems: an OrderedCollection(a ToggleMenuItemMorph(287309824)'Do it (d)' a T...etc... MenuMorph(Morph)>>processEvent: Receiver: a MenuMorph(954466304) Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (537.0@306.0) corner: (682.0@644.0) owner: nil submorphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuIte...etc... fullBounds: (537.0@306.0) corner: (683.0@645.0) color: (Color r: 0.775 g: 0.775 b: 0.775) extension: a MorphExtension (958136320) [other:  (basicColor -> Color lightGray...etc... borderWidth: 1 borderColor: Color gray defaultTarget: a Workspace selectedItem: a ToggleMenuItemMorph(287309824)'Do it (d)' stayUp: false popUpOwner: nil activeSubMenu: nil activatorDockingBar: nil embeddable: nil menuItems: an OrderedCollection(a ToggleMenuItemMorph(287309824)'Do it (d)' a T...etc... MenuMorph>>handleFocusEvent: Receiver: a MenuMorph(954466304) Arguments and temporary variables: evt: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (537.0@306.0) corner: (682.0@644.0) owner: nil submorphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuIte...etc... fullBounds: (537.0@306.0) corner: (683.0@645.0) color: (Color r: 0.775 g: 0.775 b: 0.775) extension: a MorphExtension (958136320) [other:  (basicColor -> Color lightGray...etc... borderWidth: 1 borderColor: Color gray defaultTarget: a Workspace selectedItem: a ToggleMenuItemMorph(287309824)'Do it (d)' stayUp: false popUpOwner: nil activeSubMenu: nil activatorDockingBar: nil embeddable: nil menuItems: an OrderedCollection(a ToggleMenuItemMorph(287309824)'Do it (d)' a T...etc... --- The full stack --- NBGLContextDriver class(Object)>>error: [self error: 'No suitable implementation found for initializing OpenGL context for your platform'] in NBGLContextDriver class>>forCurrentPlatform OrderedCollection(Collection)>>detect:ifNone: NBGLContextDriver class>>forCurrentPlatform NBGLContextDriver class>>createContext: NBGLDisplay class>>extent: GLTTRenderingDemo(GLViewportMorph)>>initializeForNewSession GLTTRenderingDemo>>initializeForNewSession GLTTRenderingDemo(GLViewportMorph)>>initialize GLTTRenderingDemo>>initialize GLTTRenderingDemo class(Behavior)>>new UndefinedObject>>DoIt Compiler>>evaluate:in:to:notifying:ifFail:logged: [rcvr class evaluatorClass new evaluate: self selectionForDoitAsStream in: ctxt to: rcvr notifying: self morph ifFail: [self morph flash. ^ nil] logged: true] in SmalltalkEditor>>evaluateSelectionAndDo: BlockClosure>>on:do: SmalltalkEditor>>evaluateSelectionAndDo: SmalltalkEditor>>evaluateSelection [textMorph editor evaluateSelection] in PluggableTextMorph>>doIt [result := editBlock value] in PluggableTextMorph>>handleEdit: TextMorphForEditView(TextMorph)>>handleEdit: PluggableTextMorph>>handleEdit: PluggableTextMorph>>doIt Workspace(StringHolder)>>perform:orSendTo: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]. self changed] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent:  - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: WorldState>>doOneSubCycleFor: PasteUpMorph>>doOneSubCycle MenuMorph>>invokeModalAt:in:allowKeyboard: MenuMorph>>invokeModal: MenuMorph>>invokeModal PluggableTextMorph>>yellowButtonActivity: TextMorphForEditView>>mouseDown: TextMorphForEditView(Morph)>>handleMouseDown: MouseButtonEvent>>sentTo: TextMorphForEditView(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: TextMorphForEditView(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: TransformMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: PluggableTextMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: SystemWindow(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: PasteUpMorph(Morph)>>processEvent:using: PasteUpMorph>>processEvent:using: PasteUpMorph(Morph)>>processEvent: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in MorphicUIManager>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess
On Jan 31, 2012, at 10:29 AM, dimitris chloupis wrote:
I wanted to ask if NB and COG will support windows as well, I see no windows build.
yes this is just that we got instability on jenkins windows slave
and here we go with first problem. I am in linux mint 12 32 bit with a graphic card NVIDIA GEFORCE 6200 .
I got Cog VM with the Nativeboost plugin + Pharo 1.4 image + Nativeboost + NBOpenGL
This is my workspace
---- Gofer it squeaksource: 'NativeBoost'; package: 'NativeBoost-Installer'; load.
NBInstaller install.
Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load.
ConfigurationOfNBOpenGL project lastVersion load.
test := (GLTTRenderingDemo new) openInWorld; yourself. ---
the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL
Here is all debug info
---- 31 January 2012 11:27:51 am
VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-IgorStasenko.8 uuid: f47ef546-de3d-4415-850e-6437d67bfb5c Aug 9 2011, StackToRegisterMappingCogit VMMaker-oscog-IgorStasenko.108 uuid: 384f4108-f1f4-4954-8357-0b3005cb81e2 Aug 9 2011, https://git.gitorious.org/cogvm/blessed.git Commit: f6deabba4432fa22b767dc17718a0fb84c9f3e88 Date: Tue Aug 9 14:47:19 2011 +0200 By: Igor Stasenko <siguctua@gmail.com> Image: Pharo1.4a [Latest update: #14284]
NBGLContextDriver class(Object)>>error: Receiver: NBGLContextDriver Arguments and temporary variables: aString: 'No suitable implementation found for initializing OpenGL context for ...etc... Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses: {NBMacGLContextDriver} name:
#NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil
[self error: 'No suitable implementation found for initializing OpenGL context for your platform'] in NBGLContextDriver class>>forCurrentPlatform Receiver: NBGLContextDriver Arguments and temporary variables:
Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses: {NBMacGLContextDriver} name: #NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors:
nil
OrderedCollection(Collection)>>detect:ifNone: Receiver: an OrderedCollection(NBMacGLContextDriver) Arguments and temporary variables: aBlock: [:cls | cls supportsCurrentPlatform] exceptionBlock: [self error: 'No suitable implementation found for initializing...etc... Receiver's instance variables: array:
{NBMacGLContextDriver} firstIndex: 1 lastIndex: 1
NBGLContextDriver class>>forCurrentPlatform Receiver: NBGLContextDriver Arguments and temporary variables: driver: nil Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses:
{NBMacGLContextDriver} name: #NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil
NBGLContextDriver class>>createContext: Receiver: NBGLContextDriver Arguments and temporary variables: initialExtent: (50@40) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses: {NBMacGLContextDriver}
name: #NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil
NBGLDisplay class>>extent: Receiver: NBGLDisplay Arguments and temporary variables: anInitialExtent: (50@40) driver: nil extensions: nil disp:
nil ext: (50@40) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#canUseForm:->(NBGLDisplay>>#canUseForm: "a Comp...etc... format: 136 instanceVariables: #('session' 'extent' 'driver') organization: ('reading pixels' canUseForm: updateForm:bounds:) ('viewport' cha...etc... subclasses: {NBMSAAOffscreenDisplay. NBOffscreenDisplay} name: #NBGLDisplay classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil
GLTTRenderingDemo(GLViewportMorph)>>initializeForNewSession Receiver: a GLTTRenderingDemo(979369984) Arguments and temporary variables:
Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (987496448) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache:
nil font: nil curveRenderer: nil
GLTTRenderingDemo>>initializeForNewSession Receiver: a GLTTRenderingDemo(979369984) Arguments and temporary variables:
Receiver's instance variables: bounds: (0@0) corner: (50@40)
owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (987496448) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer:
nil
GLTTRenderingDemo(GLViewportMorph)>>initialize Receiver: a GLTTRenderingDemo(979369984) Arguments and temporary variables:
Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #()
fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (987496448) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil
GLTTRenderingDemo>>initialize Receiver: a GLTTRenderingDemo(979369984) Arguments and temporary variables: fontPath: nil Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (987496448) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil
GLTTRenderingDemo class(Behavior)>>new Receiver: GLTTRenderingDemo Arguments and temporary variables:
Receiver's instance variables: superclass: GLViewportMorph methodDict: a MethodDictionary(#initialize->(GLTTRenderingDemo>>#initialize "a ...etc... format: 158 instanceVariables: #('d' 'glyphCache' 'font' 'curveRenderer') organization: ('as yet unclassified' initialize initializeForNewSession openInW...etc... subclasses: nil name: #GLTTRenderingDemo classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Morphic-Demo' traitComposition: {} localSelectors: nil
UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables:
Receiver's instance variables: nil
Compiler>>evaluate:in:to:notifying:ifFail:logged: Receiver: a Compiler Arguments and temporary variables: textOrStream: a ReadWriteStream aContext: nil receiver: nil aRequestor: a TextMorphForEditView(50593792) failBlock: [self morph flash. ^ nil] logFlag: true methodNode: DoIt ^ test := GLTTRenderingDemo new openInWorld; yourself method: (UndefinedObject>>#DoIt "a CompiledMethod(970457088)") value: nil toLog: nil itsSelection: nil
itsSelectionString: nil Receiver's instance variables: sourceStream: a ReadWriteStream requestor: a TextMorphForEditView(50593792) class: UndefinedObject category: nil context: nil parser: a Parser
[rcvr class evaluatorClass new evaluate: self selectionForDoitAsStream in: ctxt to: rcvr notifying: self morph ifFail: [self morph flash. ^ nil] logged: true] in SmalltalkEditor>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(50593792) selectionShowing: true
model: a Workspace editingState: a SmalltalkEditingState
BlockClosure>>on:do: Receiver: [rcvr class evaluatorClass new evaluate: self selectionForDoitAsStream in: ctxt to: ...etc... Arguments and temporary variables: exception:
OutOfScopeNotification handlerAction: [:ex | ex resume: true] handlerActive: true Receiver's instance variables: outerContext: SmalltalkEditor>>evaluateSelectionAndDo: startpc: 110 numArgs:
0
SmalltalkEditor>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [:result | result] result: nil rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(50593792) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState
SmalltalkEditor>>evaluateSelection Receiver: a SmalltalkEditor Arguments and temporary variables:
Receiver's instance variables: morph: a TextMorphForEditView(50593792) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState
[textMorph editor evaluateSelection] in PluggableTextMorph>>doIt
Receiver: a PluggableTextMorph(268173312) Arguments and temporary variables:
Receiver's instance variables: bounds: (509.0@25.0) corner: (951.0@388.0) owner: a SystemWindow(672137216) submorphs: an Array(a TransformMorph(428343296)) fullBounds: (509@25) corner: (951@388) color: (Color r: 0.804 g: 0.864 b: 0.857) extension: a MorphExtension (45350912) [locked] borderWidth: 1 borderColor: #inset model: a Workspace open:
false accessor: nil scrollBar: a ScrollBar(274989056) scroller: a TransformMorph(428343296) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector:
#codePaneMenu:shifted: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(668205056) textMorph: a TextMorphForEditView(50593792) getTextSelector: #contents setTextSelector: #acceptContents: getSelectionSelector: nil hasUnacceptedEdits: true askBeforeDiscardingEdits: true selectionInterval: (1 to: 333) hasEditingConflicts: false acceptAction: nil getColorSelector: nil unstyledAcceptText: nil styler: a SHTextStylerST80 autoAccept: nil enabled: true getEnabledSelector: nil highlights: an OrderedCollection() acceptOnFocusChange: nil selectionColor: nil alwaysAccept: nil changedAction: nil
[result := editBlock value] in PluggableTextMorph>>handleEdit: Receiver: a PluggableTextMorph(268173312) Arguments and temporary variables: editBlock: [textMorph editor evaluateSelection] result: #(nil) Receiver's instance variables: bounds: (509.0@25.0) corner: (951.0@388.0) owner: a SystemWindow(672137216) submorphs: an Array(a TransformMorph(428343296)) fullBounds: (509@25) corner: (951@388) color: (Color r: 0.804 g: 0.864 b: 0.857) extension: a MorphExtension (45350912) [locked] borderWidth: 1
borderColor: #inset model: a Workspace open: false accessor: nil scrollBar: a ScrollBar(274989056) scroller: a TransformMorph(428343296) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #codePaneMenu:shifted: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(668205056) textMorph: a TextMorphForEditView(50593792) getTextSelector: #contents setTextSelector: #acceptContents: getSelectionSelector: nil hasUnacceptedEdits: true askBeforeDiscardingEdits: true
selectionInterval: (1 to: 333) hasEditingConflicts: false acceptAction: nil getColorSelector: nil unstyledAcceptText: nil styler: a SHTextStylerST80 autoAccept: nil enabled: true getEnabledSelector: nil highlights: an OrderedCollection() acceptOnFocusChange: nil selectionColor: nil alwaysAccept: nil changedAction: nil
TextMorphForEditView(TextMorph)>>handleEdit: Receiver: a TextMorphForEditView(50593792) Arguments and temporary variables: editBlock: [result := editBlock value] Receiver's instance variables: bounds: (0@0) corner: (434@274) owner: a TransformMorph(428343296) submorphs: #() fullBounds: (0@0) corner: (434@274) color: Color black extension: a MorphExtension (70778880) [other: (blinkStart -> 2690020) (myDepe...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'Gofer it squeaksource: ''NativeBoost''; packa...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editView: a PluggableTextMorph(268173312) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil
PluggableTextMorph>>handleEdit: Receiver: a PluggableTextMorph(268173312) Arguments and temporary variables: editBlock: [textMorph editor evaluateSelection] result: #(nil) Receiver's instance variables: bounds: (509.0@25.0) corner: (951.0@388.0) owner: a SystemWindow(672137216) submorphs: an Array(a TransformMorph(428343296)) fullBounds: (509@25) corner: (951@388) color: (Color r: 0.804 g: 0.864 b: 0.857) extension: a MorphExtension (45350912) [locked] borderWidth: 1 borderColor: #inset model: a Workspace open: false accessor: nil scrollBar: a ScrollBar(274989056) scroller: a TransformMorph(428343296) retractableScrollBar: false
scrollBarOnLeft: false getMenuSelector: #codePaneMenu:shifted: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(668205056) textMorph: a TextMorphForEditView(50593792) getTextSelector: #contents setTextSelector: #acceptContents: getSelectionSelector: nil hasUnacceptedEdits: true askBeforeDiscardingEdits: true selectionInterval: (1 to: 333) hasEditingConflicts: false acceptAction: nil getColorSelector: nil unstyledAcceptText: nil styler: a SHTextStylerST80 autoAccept: nil enabled: true getEnabledSelector: nil highlights: an OrderedCollection() acceptOnFocusChange: nil selectionColor: nil alwaysAccept: nil
changedAction: nil
PluggableTextMorph>>doIt Receiver: a PluggableTextMorph(268173312) Arguments and temporary variables:
Receiver's instance variables: bounds: (509.0@25.0) corner: (951.0@388.0) owner: a SystemWindow(672137216) submorphs: an Array(a TransformMorph(428343296)) fullBounds: (509@25) corner: (951@388) color: (Color r: 0.804 g: 0.864 b: 0.857) extension: a MorphExtension (45350912) [locked] borderWidth: 1 borderColor: #inset model: a Workspace open: false accessor: nil scrollBar: a ScrollBar(274989056) scroller: a TransformMorph(428343296) retractableScrollBar: false
scrollBarOnLeft: false getMenuSelector: #codePaneMenu:shifted: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(668205056) textMorph: a TextMorphForEditView(50593792) getTextSelector: #contents setTextSelector: #acceptContents: getSelectionSelector: nil hasUnacceptedEdits: true askBeforeDiscardingEdits: true selectionInterval: (1 to: 333) hasEditingConflicts: false acceptAction: nil getColorSelector: nil unstyledAcceptText: nil styler: a SHTextStylerST80 autoAccept: nil enabled: true getEnabledSelector: nil highlights: an OrderedCollection() acceptOnFocusChange: nil selectionColor: nil alwaysAccept: nil
changedAction: nil
Workspace(StringHolder)>>perform:orSendTo: Receiver: a Workspace Arguments and temporary variables: selector: #doIt otherTarget: a PluggableTextMorph(268173312) Receiver's instance variables: dependents: a DependentsArray(a SystemWindow(672137216) a PluggableTextMorph(26...etc... contents: '' bindings: a Dictionary('test'->nil ) acceptDroppedMorphs: false acceptAction: nil mustDeclareVariables: false fileName: nil lineEnding: #lf encoding: 'utf-8' stylingActive: true
[| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]. self changed] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: evt: [(560@321) mouseUp 828114 nil] selArgCount: 2 Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled:
true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon:
Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil
BlockClosure>>ensure: Receiver: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector...etc... Arguments and temporary variables: aBlock: [oldcursor show] complete: nil returnValue: nil Receiver's instance variables: outerContext: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: startpc: 160 numArgs: 0
CursorWithMask(Cursor)>>showWhile: Receiver: ((CursorWithMask extent: (16@16) depth: 1 fromArray: #( 2r0 2r100000000000000000000...etc... Arguments and temporary variables: aBlock: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [targe...etc... oldcursor: ((CursorWithMask extent: (16@16) depth: 1 fromArray: #( 2r0 2...etc... Receiver's instance variables: bits: a Bitmap of length 16 width: 16 height: 16 depth: 1 offset: (-1@ -1) maskForm: Form(16x16x1)
ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: evt: [(560@321) mouseUp 828114 nil] w: a PasteUpMorph(425197568) [world] Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0
contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil
ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: evt: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector:
#perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil
ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs:
#() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector:
#perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil
MouseButtonEvent>>sentTo: Receiver: [(560@321) mouseUp 828114 nil] Arguments and temporary variables: anObject: a ToggleMenuItemMorph(287309824)'Do it (d)' Receiver's instance variables: timeStamp: 828114 source: a HandMorph(843055104) windowIndex: nil
type: #mouseUp buttons: 0 position: (560@321) handler: nil wasHandled: true whichButton: 4
ToggleMenuItemMorph(Morph)>>handleEvent:
Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil
MorphicEventDispatcher>>dispatchDefault:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] aMorph: a ToggleMenuItemMorph(287309824)'Do it (d)' localEvt: nil index: 1 child: nil morphs: #() inside: true Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] aMorph: a ToggleMenuItemMorph(287309824)'Do it (d)' Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with:
ToggleMenuItemMorph(Morph)>>processEvent:using: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] defaultDispatcher: a MorphicEventDispatcher Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace
selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText:
nil
MorphicEventDispatcher>>dispatchDefault:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] aMorph: a MenuMorph(954466304) localEvt: [(560@321) mouseUp 828114 nil] index:
1 child: a ToggleMenuItemMorph(287309824)'Do it (d)' morphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuItemMo...etc... inside: false Receiver's instance variables: lastType: #mouseUp lastDispatch:
#dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] aMorph: a MenuMorph(954466304) Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with:
MenuMorph(Morph)>>processEvent:using: Receiver: a MenuMorph(954466304) Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] defaultDispatcher: a MorphicEventDispatcher Receiver's instance variables: bounds: (537.0@306.0) corner: (682.0@644.0) owner: nil submorphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuIte...etc... fullBounds: (537.0@306.0) corner: (683.0@645.0) color: (Color r: 0.775 g: 0.775 b: 0.775) extension: a MorphExtension (958136320) [other: (basicColor -> Color lightGray...etc... borderWidth: 1 borderColor: Color gray defaultTarget: a Workspace selectedItem: a ToggleMenuItemMorph(287309824)'Do it (d)' stayUp: false
popUpOwner: nil activeSubMenu: nil activatorDockingBar: nil embeddable: nil menuItems: an OrderedCollection(a ToggleMenuItemMorph(287309824)'Do it (d)' a T...etc...
MenuMorph(Morph)>>processEvent: Receiver: a MenuMorph(954466304) Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (537.0@306.0) corner: (682.0@644.0) owner: nil submorphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuIte...etc... fullBounds: (537.0@306.0) corner: (683.0@645.0) color: (Color r: 0.775 g: 0.775 b: 0.775) extension: a MorphExtension (958136320) [other: (basicColor -> Color lightGray...etc... borderWidth: 1 borderColor: Color gray defaultTarget: a Workspace selectedItem: a ToggleMenuItemMorph(287309824)'Do it (d)' stayUp: false popUpOwner: nil activeSubMenu: nil activatorDockingBar: nil embeddable: nil menuItems: an OrderedCollection(a ToggleMenuItemMorph(287309824)'Do it (d)' a T...etc...
MenuMorph>>handleFocusEvent: Receiver: a MenuMorph(954466304) Arguments and temporary variables: evt: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (537.0@306.0) corner: (682.0@644.0) owner: nil submorphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuIte...etc... fullBounds: (537.0@306.0) corner: (683.0@645.0) color: (Color r: 0.775 g: 0.775 b: 0.775) extension: a MorphExtension (958136320) [other: (basicColor -> Color lightGray...etc... borderWidth: 1 borderColor: Color gray defaultTarget: a Workspace selectedItem: a ToggleMenuItemMorph(287309824)'Do it (d)' stayUp: false popUpOwner:
nil activeSubMenu: nil activatorDockingBar: nil embeddable: nil menuItems: an OrderedCollection(a ToggleMenuItemMorph(287309824)'Do it (d)' a T...etc...
--- The full stack --- NBGLContextDriver class(Object)>>error: [self error: 'No suitable implementation found for initializing OpenGL context for your platform'] in NBGLContextDriver class>>forCurrentPlatform OrderedCollection(Collection)>>detect:ifNone: NBGLContextDriver class>>forCurrentPlatform NBGLContextDriver class>>createContext: NBGLDisplay class>>extent: GLTTRenderingDemo(GLViewportMorph)>>initializeForNewSession GLTTRenderingDemo>>initializeForNewSession GLTTRenderingDemo(GLViewportMorph)>>initialize GLTTRenderingDemo>>initialize GLTTRenderingDemo class(Behavior)>>new UndefinedObject>>DoIt Compiler>>evaluate:in:to:notifying:ifFail:logged: [rcvr class evaluatorClass new evaluate: self selectionForDoitAsStream in: ctxt to: rcvr notifying: self morph ifFail: [self morph flash. ^ nil] logged: true] in SmalltalkEditor>>evaluateSelectionAndDo: BlockClosure>>on:do: SmalltalkEditor>>evaluateSelectionAndDo: SmalltalkEditor>>evaluateSelection [textMorph editor evaluateSelection] in PluggableTextMorph>>doIt [result := editBlock value] in PluggableTextMorph>>handleEdit: TextMorphForEditView(TextMorph)>>handleEdit: PluggableTextMorph>>handleEdit: PluggableTextMorph>>doIt Workspace(StringHolder)>>perform:orSendTo: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]. self changed] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: WorldState>>doOneSubCycleFor: PasteUpMorph>>doOneSubCycle MenuMorph>>invokeModalAt:in:allowKeyboard: MenuMorph>>invokeModal: MenuMorph>>invokeModal PluggableTextMorph>>yellowButtonActivity: TextMorphForEditView>>mouseDown: TextMorphForEditView(Morph)>>handleMouseDown: MouseButtonEvent>>sentTo: TextMorphForEditView(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: TextMorphForEditView(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: TransformMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: PluggableTextMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: SystemWindow(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: PasteUpMorph(Morph)>>processEvent:using: PasteUpMorph>>processEvent:using: PasteUpMorph(Morph)>>processEvent: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in MorphicUIManager>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess
On 31 January 2012 10:29, dimitris chloupis <thekilon@yahoo.co.uk> wrote:
I wanted to ask if NB and COG will support windows as well, I see no windows build. there is windows build, just check downloads page of NB project site.
and here we go with first problem. I am in linux mint 12 32 bit with a graphic card NVIDIA GEFORCE 6200 .
I got Cog VM with the Nativeboost plugin + Pharo 1.4 image + Nativeboost + NBOpenGL
This is my workspace
---- Gofer it     squeaksource: 'NativeBoost';     package: 'NativeBoost-Installer';     load.
NBInstaller install.
Gofer it     squeaksource: 'NBOpenGL';     package: 'ConfigurationOfNBOpenGL';     load.
ConfigurationOfNBOpenGL project lastVersion load.
test := (GLTTRenderingDemo new) openInWorld; yourself. ---
the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL
Yes, because for linux we don't have an opengl initialization yet. Javier were working on that.. @Javier, what is the status? -- Best regards, Igor Stasenko.
 yes this is just that we got instability on jenkins windows slaveÂ
aha no problemo I can wait
 there is windows build, just check downloads page of NB project site.
oups I missed the obvious one , hehe
Yes, because for linux we don't have an opengl initialization yet. Javier were working on that.. @Javier, what is the status?
No problemo, I am fine with macos one for now which is my main platform anyway. But its good to know that future support for windows and linux is one of your goals. By the way I read the Chapter you linked of PBE pdf on FFI . Very well written, it might be WIP but already it clears up loads and loads of things. Cool name you picked there "Spock" should I assume someone is like me a big fan of Star Trek ? Is there any documentation anywhere even partial for NBOpenGL that I can use ? (google does not return anything )
On 31 January 2012 14:57, dimitris chloupis <thekilon@yahoo.co.uk> wrote:
 yes this is just that we got instability on jenkins windows slave
aha no problemo I can wait
 there is windows build, just check downloads page of NB project site.
oups I missed the obvious one , hehe
Yes, because for linux we don't have an opengl initialization yet. Javier were working on that.. @Javier, what is the status?
No problemo, I am fine with macos one for now which is my main platform anyway. But its good to know that future support for windows and linux is one of your goals.
yes.. but it takes time to make it work everywhere.
By the way I read the Chapter you linked of PBE pdf on FFI . Very well written, it might be WIP but already it clears up loads and loads of things.
Cool name you picked there "Spock" should I assume someone is like me a big fan of Star Trek ?
Is there any documentation anywhere even partial for NBOpenGL that I can use ? (google does not return anything )
since it is a direct binding to opengl, do not expect any documentation on it. it is assumed that if you know opengl, you should be capable of doing the rest by yourself :) maybe context handling/initialization part needs some documenting.. but not that much. since using FFI you can directly interact with OS and other OS-specific stuff, anyone could actually do it in own whay (an opengl context creation), while then use the NBOpenGL for rendering. -- Best regards, Igor Stasenko.
On 1/31/12 9:03 AM, Igor Stasenko wrote:
On 31 January 2012 14:57, dimitris chloupis<thekilon@yahoo.co.uk> wrote: [...] Is there any documentation anywhere even partial for NBOpenGL that I can use ? (google does not return anything )
since it is a direct binding to opengl, do not expect any documentation on it. it is assumed that if you know opengl, you should be capable of doing the rest by yourself :)
maybe context handling/initialization part needs some documenting.. but not that much. since using FFI you can directly interact with OS and other OS-specific stuff, anyone could actually do it in own whay (an opengl context creation), while then use the NBOpenGL for rendering.
Well, there are a few quirks with using it in Morphs that are specific to Squeak and Pharo, and there are differences between Squeak AND Pharo that one needs to know about if one wants the best possible framerate for each, etc. Also, how to fully integrate the World morph so that it renders into an OpenGL window as efficiently as possible is still not totally clear to me, even after your last email... But those are things that will get resolved as time goes on and can be put into class examples and a help manual... And of course, into one or more video tutorials. ;-) Lawson
On 31 January 2012 17:47, Lawson English <lenglish5@cox.net> wrote:
On 1/31/12 9:03 AM, Igor Stasenko wrote:
On 31 January 2012 14:57, dimitris chloupis<thekilon@yahoo.co.uk> Â wrote: [...]
Is there any documentation anywhere even partial for NBOpenGL that I can use ? (google does not return anything )
since it is a direct binding to opengl, do not expect any documentation on it. it is assumed that if you know opengl, you should be capable of doing the rest by yourself :)
maybe context handling/initialization part needs some documenting.. but not that much. since using FFI you can directly interact with OS and other OS-specific stuff, anyone could actually do it in own whay (an opengl context creation), while then use the NBOpenGL for rendering.
Well, there are a few quirks with using it in Morphs that are specific to Squeak and Pharo, and there are differences between Squeak AND Pharo that one needs to know about if one wants the best possible framerate for each, etc.
not required part for opengl bindings to function.
Also, how to fully integrate the World morph so that it renders into an OpenGL window as efficiently as possible is still not totally clear to me, even after your last email...
Right, but i'd like to stress, that NBOpenGL is a bindings to OpenGL and nothing more. Making a full Morphic world to be displayed in opengl context or vise versus is not of its concern, because it is actually is up to you how you gonna use it.
But those are things that will get resolved as time goes on and can be put into class examples and a help manual...
yes, in examples and demos, like one i did. But i'm not going to make it "standard" designating the only way how it could be used. You know, there's alot of applications for opengl. One might want to use for a fullscreen rendering , and render something completely irrelevant to morphic, other can use it for offscreen rendering, or even for doing math on GPU.
And of course, into one or more video tutorials. ;-)
Lawson
-- Best regards, Igor Stasenko.
Hi! IIRC: Two months ago the code was working on windows but needed some modifications to create the contexts on the other platforms. Probably Igor did that for mac now, and maybe even linux, but I have to test. I remember I was working on the NBXLib wrapper so that context creation can be done with st code on linux. I will continue with all this this week, I just have to download everything and catch up with recent changes and then I'll come back. Cheers, Javier. On Tue, Jan 31, 2012 at 10:38 AM, Igor Stasenko <siguctua@gmail.com> wrote:
On 31 January 2012 10:29, dimitris chloupis <thekilon@yahoo.co.uk> wrote:
I wanted to ask if NB and COG will support windows as well, I see no windows build. there is windows build, just check downloads page of NB project site.
and here we go with first problem. I am in linux mint 12 32 bit with a graphic card NVIDIA GEFORCE 6200 .
I got Cog VM with the Nativeboost plugin + Pharo 1.4 image + Nativeboost
+
NBOpenGL
This is my workspace
---- Gofer it squeaksource: 'NativeBoost'; package: 'NativeBoost-Installer'; load.
NBInstaller install.
Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load.
ConfigurationOfNBOpenGL project lastVersion load.
test := (GLTTRenderingDemo new) openInWorld; yourself. ---
the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL
Yes, because for linux we don't have an opengl initialization yet. Javier were working on that.. @Javier, what is the status?
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
On 31 January 2012 16:53, Javier Pimás <elpochodelagente@gmail.com> wrote:
Hi! IIRC: Two months ago the code was working on windows but needed some modifications to create the contexts on the other platforms. Probably Igor did that for mac now, and maybe even linux, but I have to test. I remember I was working on the NBXLib wrapper so that context creation can be done with st code on linux. I will continue with all this this week, I just have to download everything and catch up with recent changes and then I'll come back.
No, i did nothing concerning linux port. And i actually broken the windows port for now.. because i refactored code while making mac port working. but i will fix it soon :)
Cheers, Javier.
-- Best regards, Igor Stasenko.
I got some time and finished commiting it. Steps to load it (I tested with pharo 1.3): 1. load NBOpenGL with its configuration. 2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello Then you can run the example (you'll need tahoma font): 4. add the patch I attach. 5. Do this: GLTTRenderingDemo new openInWorld. tell if something doesn't work. Cheers, Javier. On Tue, Jan 31, 2012 at 12:53 PM, Javier Pimás <elpochodelagente@gmail.com>wrote:
Hi! IIRC: Two months ago the code was working on windows but needed some modifications to create the contexts on the other platforms. Probably Igor did that for mac now, and maybe even linux, but I have to test. I remember I was working on the NBXLib wrapper so that context creation can be done with st code on linux. I will continue with all this this week, I just have to download everything and catch up with recent changes and then I'll come back.
Cheers, Javier.
On Tue, Jan 31, 2012 at 10:38 AM, Igor Stasenko <siguctua@gmail.com>wrote:
On 31 January 2012 10:29, dimitris chloupis <thekilon@yahoo.co.uk> wrote:
I wanted to ask if NB and COG will support windows as well, I see no windows build. there is windows build, just check downloads page of NB project site.
and here we go with first problem. I am in linux mint 12 32 bit with a graphic card NVIDIA GEFORCE 6200 .
I got Cog VM with the Nativeboost plugin + Pharo 1.4 image +
Nativeboost +
NBOpenGL
This is my workspace
---- Gofer it squeaksource: 'NativeBoost'; package: 'NativeBoost-Installer'; load.
NBInstaller install.
Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load.
ConfigurationOfNBOpenGL project lastVersion load.
test := (GLTTRenderingDemo new) openInWorld; yourself. ---
the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL
Yes, because for linux we don't have an opengl initialization yet. Javier were working on that.. @Javier, what is the status?
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Lic. Javier Pimás Ciudad de Buenos Aires
great! On 19 March 2012 16:11, Javier Pimás <elpochodelagente@gmail.com> wrote:
I got some time and finished commiting it.
Steps to load it (I tested with pharo 1.3):
1. load NBOpenGL with its configuration. 2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello
Then you can run the example (you'll need tahoma font):
4. add the patch I attach. 5. Do this:
GLTTRenderingDemo new openInWorld.
tell if something doesn't work.
Cheers, Javier.
On Tue, Jan 31, 2012 at 12:53 PM, Javier Pimás <elpochodelagente@gmail.com> wrote:
Hi! IIRC: Two months ago the code was working on windows but needed some modifications to create the contexts on the other platforms. Probably Igor did that for mac now, and maybe even linux, but I have to test. I remember I was working on the NBXLib wrapper so that context creation can be done with st code on linux. I will continue with all this this week, I just have to download everything and catch up with recent changes and then I'll come back.
Cheers, Javier.
On Tue, Jan 31, 2012 at 10:38 AM, Igor Stasenko <siguctua@gmail.com> wrote:
On 31 January 2012 10:29, dimitris chloupis <thekilon@yahoo.co.uk> wrote:
I wanted to ask if NB and COG will support windows as well, I see no windows build. there is windows build, just check downloads page of NB project site.
and here we go with first problem. I am in linux mint 12 32 bit with a graphic card NVIDIA GEFORCE 6200 .
I got Cog VM with the Nativeboost plugin + Pharo 1.4 image + Nativeboost + NBOpenGL
This is my workspace
---- Gofer it     squeaksource: 'NativeBoost';     package: 'NativeBoost-Installer';     load.
NBInstaller install.
Gofer it     squeaksource: 'NBOpenGL';     package: 'ConfigurationOfNBOpenGL';     load.
ConfigurationOfNBOpenGL project lastVersion load.
test := (GLTTRenderingDemo new) openInWorld; yourself. ---
the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL
Yes, because for linux we don't have an opengl initialization yet. Javier were working on that.. @Javier, what is the status?
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Best regards, Igor Stasenko.
I think that moat of us appreciate screenshots sent on the mailing list :-) Cheers, Alexandre Le 19 mars 2012 à 10:50, Igor Stasenko <siguctua@gmail.com> a écrit :
great!
On 19 March 2012 16:11, Javier Pimás <elpochodelagente@gmail.com> wrote:
I got some time and finished commiting it.
Steps to load it (I tested with pharo 1.3):
1. load NBOpenGL with its configuration. 2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello
Then you can run the example (you'll need tahoma font):
4. add the patch I attach. 5. Do this:
GLTTRenderingDemo new openInWorld.
tell if something doesn't work.
Cheers, Javier.
On Tue, Jan 31, 2012 at 12:53 PM, Javier Pimás <elpochodelagente@gmail.com> wrote:
Hi! IIRC: Two months ago the code was working on windows but needed some modifications to create the contexts on the other platforms. Probably Igor did that for mac now, and maybe even linux, but I have to test. I remember I was working on the NBXLib wrapper so that context creation can be done with st code on linux. I will continue with all this this week, I just have to download everything and catch up with recent changes and then I'll come back.
Cheers, Javier.
On Tue, Jan 31, 2012 at 10:38 AM, Igor Stasenko <siguctua@gmail.com> wrote:
On 31 January 2012 10:29, dimitris chloupis <thekilon@yahoo.co.uk> wrote:
I wanted to ask if NB and COG will support windows as well, I see no windows build. there is windows build, just check downloads page of NB project site.
and here we go with first problem. I am in linux mint 12 32 bit with a graphic card NVIDIA GEFORCE 6200 .
I got Cog VM with the Nativeboost plugin + Pharo 1.4 image + Nativeboost + NBOpenGL
This is my workspace
---- Gofer it squeaksource: 'NativeBoost'; package: 'NativeBoost-Installer'; load.
NBInstaller install.
Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load.
ConfigurationOfNBOpenGL project lastVersion load.
test := (GLTTRenderingDemo new) openInWorld; yourself. ---
the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL
Yes, because for linux we don't have an opengl initialization yet. Javier were working on that.. @Javier, what is the status?
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Best regards, Igor Stasenko.
+1 On Wed, Mar 21, 2012 at 11:16 AM, Alexandre Bergel <alexandre.bergel@me.com>wrote:
I think that moat of us appreciate screenshots sent on the mailing list :-)
Cheers, Alexandre
Le 19 mars 2012 à 10:50, Igor Stasenko <siguctua@gmail.com> a écrit :
great!
On 19 March 2012 16:11, Javier Pimás <elpochodelagente@gmail.com> wrote:
I got some time and finished commiting it.
Steps to load it (I tested with pharo 1.3):
1. load NBOpenGL with its configuration. 2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello
Then you can run the example (you'll need tahoma font):
4. add the patch I attach. 5. Do this:
GLTTRenderingDemo new openInWorld.
tell if something doesn't work.
Cheers, Javier.
On Tue, Jan 31, 2012 at 12:53 PM, Javier Pimás < elpochodelagente@gmail.com> wrote:
Hi! IIRC: Two months ago the code was working on windows but needed
some
modifications to create the contexts on the other platforms. Probably Igor did that for mac now, and maybe even linux, but I have to test. I remember I was working on the NBXLib wrapper so that context creation can be done with st code on linux. I will continue with all this this week, I just have to download everything and catch up with recent changes and then I'll come back.
Cheers, Javier.
On Tue, Jan 31, 2012 at 10:38 AM, Igor Stasenko <siguctua@gmail.com> wrote:
On 31 January 2012 10:29, dimitris chloupis <thekilon@yahoo.co.uk>
wrote:
I wanted to ask if NB and COG will support windows as well, I see no windows build. there is windows build, just check downloads page of NB project site.
and here we go with first problem. I am in linux mint 12 32 bit with
a
graphic card NVIDIA GEFORCE 6200 .
I got Cog VM with the Nativeboost plugin + Pharo 1.4 image + Nativeboost + NBOpenGL
This is my workspace
---- Gofer it squeaksource: 'NativeBoost'; package: 'NativeBoost-Installer'; load.
NBInstaller install.
Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load.
ConfigurationOfNBOpenGL project lastVersion load.
test := (GLTTRenderingDemo new) openInWorld; yourself. ---
the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL
Yes, because for linux we don't have an opengl initialization yet. Javier were working on that.. @Javier, what is the status?
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Best regards, Igor Stasenko.
+1 :) On to the more serious topic: are we bringing morphic to OpenGL (true 3D gui ala Croquet, and a BAD idea IMHO), or are we bringing OpenGL-powered 3D morphs/windows/views/whatever to embed in a 2D environment (a VERY GOOD idea IMHO). Not meaning to rain on anyone's parade, but Croquet was arguably a huge missed opportunity. Their code for manipulating 3D objects was a thing of beauty, as far as I got with evaluating it, but they pointedly (for a while) refused to let go of the 3D immersion. AFAIK, the mesh loading and object manipulation features are now available separately on Squeak Source as CroquetGL. What I am really wanting for 3D is to have one or more views on a scene, and to embed them in a traditional 2D user interface. I hope that will not get lost while any other visions advance. Options are good. Bill ________________________________ From: pharo-project-bounces@lists.gforge.inria.fr [pharo-project-bounces@lists.gforge.inria.fr] on behalf of Bernardo Ezequiel Contreras [vonbecmann@gmail.com] Sent: Tuesday, March 20, 2012 10:22 AM To: Pharo-project@lists.gforge.inria.fr Subject: Re: [Pharo-project] Morpheas , bringing Morphic to Opengl (3d GUIs) +1 On Wed, Mar 21, 2012 at 11:16 AM, Alexandre Bergel <alexandre.bergel@me.com<mailto:alexandre.bergel@me.com>> wrote: I think that moat of us appreciate screenshots sent on the mailing list :-) Cheers, Alexandre Le 19 mars 2012 à 10:50, Igor Stasenko <siguctua@gmail.com<mailto:siguctua@gmail.com>> a écrit :
great!
On 19 March 2012 16:11, Javier Pimás <elpochodelagente@gmail.com<mailto:elpochodelagente@gmail.com>> wrote:
I got some time and finished commiting it.
Steps to load it (I tested with pharo 1.3):
1. load NBOpenGL with its configuration. 2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello
Then you can run the example (you'll need tahoma font):
4. add the patch I attach. 5. Do this:
GLTTRenderingDemo new openInWorld.
tell if something doesn't work.
Cheers, Javier.
On Tue, Jan 31, 2012 at 12:53 PM, Javier Pimás <elpochodelagente@gmail.com<mailto:elpochodelagente@gmail.com>> wrote:
Hi! IIRC: Two months ago the code was working on windows but needed some modifications to create the contexts on the other platforms. Probably Igor did that for mac now, and maybe even linux, but I have to test. I remember I was working on the NBXLib wrapper so that context creation can be done with st code on linux. I will continue with all this this week, I just have to download everything and catch up with recent changes and then I'll come back.
Cheers, Javier.
On Tue, Jan 31, 2012 at 10:38 AM, Igor Stasenko <siguctua@gmail.com<mailto:siguctua@gmail.com>> wrote:
On 31 January 2012 10:29, dimitris chloupis <thekilon@yahoo.co.uk<mailto:thekilon@yahoo.co.uk>> wrote:
I wanted to ask if NB and COG will support windows as well, I see no windows build. there is windows build, just check downloads page of NB project site.
and here we go with first problem. I am in linux mint 12 32 bit with a graphic card NVIDIA GEFORCE 6200 .
I got Cog VM with the Nativeboost plugin + Pharo 1.4 image + Nativeboost + NBOpenGL
This is my workspace
---- Gofer it squeaksource: 'NativeBoost'; package: 'NativeBoost-Installer'; load.
NBInstaller install.
Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load.
ConfigurationOfNBOpenGL project lastVersion load.
test := (GLTTRenderingDemo new) openInWorld; yourself. ---
the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL
Yes, because for linux we don't have an opengl initialization yet. Javier were working on that.. @Javier, what is the status?
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Best regards, Igor Stasenko.
I just have the font rendering example that uses openGL as a backend. I saw a cube some days ago in the mailing list, is that code available to try? It is interesting in the screenshot how the blitting was caught in the middle, I didn't check why this happens. Cheers. On Tue, Mar 20, 2012 at 12:03 PM, Schwab,Wilhelm K <bschwab@anest.ufl.edu>wrote:
+1 :)
On to the more serious topic: are we bringing morphic to OpenGL (true 3D gui ala Croquet, and a BAD idea IMHO), or are we bringing OpenGL-powered 3D morphs/windows/views/whatever to embed in a 2D environment (a VERY GOOD idea IMHO).
Not meaning to rain on anyone's parade, but Croquet was arguably a huge missed opportunity. Their code for manipulating 3D objects was a thing of beauty, as far as I got with evaluating it, but they pointedly (for a while) refused to let go of the 3D immersion. AFAIK, the mesh loading and object manipulation features are now available separately on Squeak Source as CroquetGL.
What I am really wanting for 3D is to have one or more views on a scene, and to embed them in a traditional 2D user interface. I hope that will not get lost while any other visions advance. Options are good.
Bill
------------------------------ *From:* pharo-project-bounces@lists.gforge.inria.fr [ pharo-project-bounces@lists.gforge.inria.fr] on behalf of Bernardo Ezequiel Contreras [vonbecmann@gmail.com] *Sent:* Tuesday, March 20, 2012 10:22 AM *To:* Pharo-project@lists.gforge.inria.fr
*Subject:* Re: [Pharo-project] Morpheas , bringing Morphic to Opengl (3d GUIs)
+1
On Wed, Mar 21, 2012 at 11:16 AM, Alexandre Bergel < alexandre.bergel@me.com> wrote:
I think that moat of us appreciate screenshots sent on the mailing list :-)
Cheers, Alexandre
Le 19 mars 2012 à 10:50, Igor Stasenko <siguctua@gmail.com> a écrit :
great!
On 19 March 2012 16:11, Javier Pimás <elpochodelagente@gmail.com> wrote:
I got some time and finished commiting it.
Steps to load it (I tested with pharo 1.3):
1. load NBOpenGL with its configuration. 2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello
Then you can run the example (you'll need tahoma font):
4. add the patch I attach. 5. Do this:
GLTTRenderingDemo new openInWorld.
tell if something doesn't work.
Cheers, Javier.
On Tue, Jan 31, 2012 at 12:53 PM, Javier Pimás < elpochodelagente@gmail.com> wrote:
Hi! IIRC: Two months ago the code was working on windows but needed
some
modifications to create the contexts on the other platforms. Probably Igor did that for mac now, and maybe even linux, but I have to test. I remember I was working on the NBXLib wrapper so that context creation can be done with st code on linux. I will continue with all this this week, I just have to download everything and catch up with recent changes and then I'll come back.
Cheers, Javier.
On Tue, Jan 31, 2012 at 10:38 AM, Igor Stasenko <siguctua@gmail.com> wrote:
On 31 January 2012 10:29, dimitris chloupis <thekilon@yahoo.co.uk>
wrote:
I wanted to ask if NB and COG will support windows as well, I see no windows build. there is windows build, just check downloads page of NB project site.
and here we go with first problem. I am in linux mint 12 32 bit
with a
graphic card NVIDIA GEFORCE 6200 .
I got Cog VM with the Nativeboost plugin + Pharo 1.4 image + Nativeboost + NBOpenGL
This is my workspace
---- Gofer it squeaksource: 'NativeBoost'; package: 'NativeBoost-Installer'; load.
NBInstaller install.
Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load.
ConfigurationOfNBOpenGL project lastVersion load.
test := (GLTTRenderingDemo new) openInWorld; yourself. ---
the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL
Yes, because for linux we don't have an opengl initialization yet. Javier were working on that.. @Javier, what is the status?
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
The existence of a windowed viewport suggests you are probably headed in my preferred direction. Having big text animated is nice, but I'm thinking of cubes and spheres in a scene :) A long time ago, I used Wonderland to build a poor-man's 3d cad system. I had convenience methods to (for example) arrange actors (with simple meshes applied) onto "shelves" and then stack the shelves. Once the (fairly pathetic) model was created, I could cause it to spin and "fly" around it in a crude way. It was very helpful at the time. This was based in Squeak, albeit grudgingly given the state of its UI at the time - I much prefer Pharo. I should find an old windows box and post a screenshot - I ran it not terribly long ago, and it "still worked" - no big surprise given the age of the machine that ran it :) The Wonderland interface was pretty annoying. Croquet's 3d object manipulation looked a lot better. But don't even get me started on tea time... The concept is valid, of course, but COMPILER CHANGES to do what could be done with event registration and some object composition?? - yuk. Bill ________________________________ From: pharo-project-bounces@lists.gforge.inria.fr [pharo-project-bounces@lists.gforge.inria.fr] on behalf of Javier Pimás [elpochodelagente@gmail.com] Sent: Wednesday, March 21, 2012 11:51 AM To: Pharo-project@lists.gforge.inria.fr Subject: Re: [Pharo-project] Morpheas , bringing Morphic to Opengl (3d GUIs) I just have the font rendering example that uses openGL as a backend. I saw a cube some days ago in the mailing list, is that code available to try? It is interesting in the screenshot how the blitting was caught in the middle, I didn't check why this happens. Cheers. On Tue, Mar 20, 2012 at 12:03 PM, Schwab,Wilhelm K <bschwab@anest.ufl.edu<mailto:bschwab@anest.ufl.edu>> wrote: +1 :) On to the more serious topic: are we bringing morphic to OpenGL (true 3D gui ala Croquet, and a BAD idea IMHO), or are we bringing OpenGL-powered 3D morphs/windows/views/whatever to embed in a 2D environment (a VERY GOOD idea IMHO). Not meaning to rain on anyone's parade, but Croquet was arguably a huge missed opportunity. Their code for manipulating 3D objects was a thing of beauty, as far as I got with evaluating it, but they pointedly (for a while) refused to let go of the 3D immersion. AFAIK, the mesh loading and object manipulation features are now available separately on Squeak Source as CroquetGL. What I am really wanting for 3D is to have one or more views on a scene, and to embed them in a traditional 2D user interface. I hope that will not get lost while any other visions advance. Options are good. Bill ________________________________ From: pharo-project-bounces@lists.gforge.inria.fr<mailto:pharo-project-bounces@lists.gforge.inria.fr> [pharo-project-bounces@lists.gforge.inria.fr<mailto:pharo-project-bounces@lists.gforge.inria.fr>] on behalf of Bernardo Ezequiel Contreras [vonbecmann@gmail.com<mailto:vonbecmann@gmail.com>] Sent: Tuesday, March 20, 2012 10:22 AM To: Pharo-project@lists.gforge.inria.fr<mailto:Pharo-project@lists.gforge.inria.fr> Subject: Re: [Pharo-project] Morpheas , bringing Morphic to Opengl (3d GUIs) +1 On Wed, Mar 21, 2012 at 11:16 AM, Alexandre Bergel <alexandre.bergel@me.com<mailto:alexandre.bergel@me.com>> wrote: I think that moat of us appreciate screenshots sent on the mailing list :-) Cheers, Alexandre Le 19 mars 2012 à 10:50, Igor Stasenko <siguctua@gmail.com<mailto:siguctua@gmail.com>> a écrit :
great!
On 19 March 2012 16:11, Javier Pimás <elpochodelagente@gmail.com<mailto:elpochodelagente@gmail.com>> wrote:
I got some time and finished commiting it.
Steps to load it (I tested with pharo 1.3):
1. load NBOpenGL with its configuration. 2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello
Then you can run the example (you'll need tahoma font):
4. add the patch I attach. 5. Do this:
GLTTRenderingDemo new openInWorld.
tell if something doesn't work.
Cheers, Javier.
On Tue, Jan 31, 2012 at 12:53 PM, Javier Pimás <elpochodelagente@gmail.com<mailto:elpochodelagente@gmail.com>> wrote:
Hi! IIRC: Two months ago the code was working on windows but needed some modifications to create the contexts on the other platforms. Probably Igor did that for mac now, and maybe even linux, but I have to test. I remember I was working on the NBXLib wrapper so that context creation can be done with st code on linux. I will continue with all this this week, I just have to download everything and catch up with recent changes and then I'll come back.
Cheers, Javier.
On Tue, Jan 31, 2012 at 10:38 AM, Igor Stasenko <siguctua@gmail.com<mailto:siguctua@gmail.com>> wrote:
On 31 January 2012 10:29, dimitris chloupis <thekilon@yahoo.co.uk<mailto:thekilon@yahoo.co.uk>> wrote:
I wanted to ask if NB and COG will support windows as well, I see no windows build. there is windows build, just check downloads page of NB project site.
and here we go with first problem. I am in linux mint 12 32 bit with a graphic card NVIDIA GEFORCE 6200 .
I got Cog VM with the Nativeboost plugin + Pharo 1.4 image + Nativeboost + NBOpenGL
This is my workspace
---- Gofer it squeaksource: 'NativeBoost'; package: 'NativeBoost-Installer'; load.
NBInstaller install.
Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load.
ConfigurationOfNBOpenGL project lastVersion load.
test := (GLTTRenderingDemo new) openInWorld; yourself. ---
the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL
Yes, because for linux we don't have an opengl initialization yet. Javier were working on that.. @Javier, what is the status?
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
I get Error: function unavailable with Pharo1.3 and 1.4, but I probably followed the steps wrong. I first loaded a fresh image, then did Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load. ConfigurationOfNBOpenGL project lastVersion load, as per previous instructions somewhere else, then loaded the latest NBXLib + examples from squeaksource via montecello, then latest NBOpengl-X similarly. Le 19 mars 2012 à 10:50, Igor Stasenko <siguctua@gmail.com> a écrit :
great!
On 19 March 2012 16:11, Javier Pimás <elpochodelagente@gmail.com> wrote:
I got some time and finished commiting it.
Steps to load it (I tested with pharo 1.3):
1. load NBOpenGL with its configuration. 2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello
Then you can run the example (you'll need tahoma font):
4. add the patch I attach. 5. Do this:
GLTTRenderingDemo new openInWorld.
tell if something doesn't work.
...sorry I should add I am on Ubuntu 11.10, using NBCog and the error comes from NBGlxAPI > NBFFICallout On Thu, Mar 22, 2012 at 10:43 AM, chadwick <mathnoir@gmail.com> wrote:
I get Error: function unavailable with Pharo1.3 and 1.4, but I probably followed the steps wrong. I first loaded a fresh image, then did Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load. ConfigurationOfNBOpenGL project lastVersion load, as per previous instructions somewhere else, then loaded the latest NBXLib + examples from squeaksource via montecello, then latest NBOpengl-X similarly.
Le 19 mars 2012 à 10:50, Igor Stasenko <siguctua@gmail.com> a écrit :
great!
On 19 March 2012 16:11, Javier Pimás <elpochodelagente@gmail.com> wrote:
I got some time and finished commiting it.
Steps to load it (I tested with pharo 1.3):
1. load NBOpenGL with its configuration. 2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello
Then you can run the example (you'll need tahoma font):
4. add the patch I attach. 5. Do this:
GLTTRenderingDemo new openInWorld.
tell if something doesn't work.
Can you post more info about the context? Like you were executing, the call stack, whatever. Also, check that you have the opengl lib path correctly set going to system settings -> FFI. Also, some things I forgot to mention: 1. The generated glX functions list has wrong case. All function names start with glx but should start with glX. 2. I also made the library path a setting that appears in system settings. This is cool because before library names where fixed in code, but on each system can be different. On Wed, Mar 21, 2012 at 8:49 PM, chadwick <mathnoir@gmail.com> wrote:
...sorry I should add I am on Ubuntu 11.10, using NBCog and the error comes from NBGlxAPI > NBFFICallout
On Thu, Mar 22, 2012 at 10:43 AM, chadwick <mathnoir@gmail.com> wrote:
I get Error: function unavailable with Pharo1.3 and 1.4, but I probably followed the steps wrong. I first loaded a fresh image, then did Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load. ConfigurationOfNBOpenGL project lastVersion load, as per previous instructions somewhere else, then loaded the latest NBXLib + examples from squeaksource via montecello, then latest NBOpengl-X similarly.
Le 19 mars 2012 à 10:50, Igor Stasenko <siguctua@gmail.com> a écrit :
great!
On 19 March 2012 16:11, Javier Pimás <elpochodelagente@gmail.com> wrote:
I got some time and finished commiting it.
Steps to load it (I tested with pharo 1.3):
1. load NBOpenGL with its configuration. 2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello
Then you can run the example (you'll need tahoma font):
4. add the patch I attach. 5. Do this:
GLTTRenderingDemo new openInWorld.
tell if something doesn't work.
-- Lic. Javier Pimás Ciudad de Buenos Aires
On 22 March 2012 03:36, Javier Pimás <elpochodelagente@gmail.com> wrote:
Can you post more info about the context? Like you were executing, the call stack, whatever. Also, check that you have the opengl lib path correctly set going to system settings -> FFI.
Also, some things I forgot to mention:
1. The generated glX functions list has wrong case. All function names start with glx but should start with glX.
oops.. That was never tested (for obvious reason, because i never developed on X).. so we should change the generator to produce function names with correct case.. and as bonus, have most recent opengl API :)
2. I also made the library path a setting that appears in system settings. This is cool because before library names where fixed in code, but on each system can be different.
yes. this is pain in the ass :)
On Wed, Mar 21, 2012 at 8:49 PM, chadwick <mathnoir@gmail.com> wrote:
...sorry I should add I am on Ubuntu 11.10, using NBCog and the error comes from NBGlxAPI > NBFFICallout
On Thu, Mar 22, 2012 at 10:43 AM, chadwick <mathnoir@gmail.com> wrote:
I get Error: function unavailable with Pharo1.3 and 1.4, but I probably followed the steps wrong. I first loaded a fresh image, then did Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load. ConfigurationOfNBOpenGL project lastVersion load, as per previous instructions somewhere else, then loaded the latest NBXLib + examples from squeaksource via montecello, then latest NBOpengl-X similarly.
Le 19 mars 2012 à 10:50, Igor Stasenko <siguctua@gmail.com> a écrit :
great!
On 19 March 2012 16:11, Javier Pimás <elpochodelagente@gmail.com> wrote:
I got some time and finished commiting it.
Steps to load it (I tested with pharo 1.3):
1. load NBOpenGL with its configuration. 2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello
Then you can run the example (you'll need tahoma font):
4. add the patch I attach. 5. Do this:
GLTTRenderingDemo new openInWorld.
tell if something doesn't work.
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Best regards, Igor Stasenko.
yes, I was executing GLTTRenderingDemo new openInWorld. My FFI path is /usr/lib/nvidia-current-updates/libGL.so.1 (got from ldd /usr/bin/glxgears) VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-IgorStasenko.8 uuid: f47ef546-de3d-4415-850e-6437d67bfb5c Aug 9 2011, StackToRegisterMappingCogit VMMaker-oscog-IgorStasenko.108 uuid: 384f4108-f1f4-4954-8357-0b3005cb81e2 Aug 9 2011, https://git.gitorious.org/cogvm/blessed.git Commit: f6deabba4432fa22b767dc17718a0fb84c9f3e88 Date: Tue Aug 9 14:47:19 2011 +0200 By: Igor Stasenko <siguctua@gmail.com> Image: Pharo1.4a [Latest update: #14284] NBFFICallout(Object)>>error: Receiver: a NBFFICallout Arguments and temporary variables: aString: 'function unavailable' Receiver's instance variables: asm: an AJx86Assembler proxy: a NBInterpreterProxy options: a Set(#optCoerceNilToNull #optCdecl #optAllowByteArraysPtr #optUseStac...etc... method: (NBGlxAPI>>#queryExtension:errorBase:eventBase: "a CompiledMethod(54211...etc... fnSpec: a NBFnSpec requestor: NBGlxAPI methodArgs: #('display' 'errorBase' 'eventBase') coercionMayFail: false callInfo: nil NBFFICallout>>generateCall:module: Receiver: a NBFFICallout Arguments and temporary variables: functionSpec: #(#bool #glXQueryExtension #(#Display #display #, #int #* #errorB...etc... aModuleNameOrHandle: '/usr/lib/nvidia-current-updates/libGL.so.1' fnAddress: nil Receiver's instance variables: asm: an AJx86Assembler proxy: a NBInterpreterProxy options: a Set(#optCoerceNilToNull #optCdecl #optAllowByteArraysPtr #optUseStac...etc... method: (NBGlxAPI>>#queryExtension:errorBase:eventBase: "a CompiledMethod(54211...etc... fnSpec: a NBFnSpec requestor: NBGlxAPI methodArgs: #('display' 'errorBase' 'eventBase') coercionMayFail: false callInfo: nil [:generator | generator sender: sender; callType: self callType; generateCall: fnSpec module: self moduleName] in NBGlxAPI>>call: Receiver: a NBGlxAPI Arguments and temporary variables: fnSpec: a NBFFICallout sender: #(#bool #glXQueryExtension #(#Display #display #, #int #* #errorBase #,...etc... generator: NBGlxAPI>>queryExtension:errorBase:eventBase: Receiver's instance variables: fnAddresses: #[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...etc... renderingContextHandle: nil extensions: nil NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry: Receiver: NBFFICallout Arguments and temporary variables: aBlock: [:generator | generator sender: sender; callType: self callType; ...etc... retryCtx: NBGlxAPI>>queryExtension:errorBase:eventBase: method: (NBGlxAPI>>#queryExtension:errorBase:eventBase: "a CompiledMethod(54211...etc... code: nil newMethod: nil args: nil i: nil iLimiT: nil Receiver's instance variables: superclass: NBNativeCodeGen methodDict: a MethodDictionary(#aliasForType:->(NBFFICallout>>#aliasForType: "a...etc... format: 148 instanceVariables: #('fnSpec' 'requestor' 'methodArgs' 'coercionMayFail' 'callI...etc... organization: ('type aliases' aliasForType:) ('accessing' anonSpec: callType: c...etc... subclasses: {NBNativeFunctionGen} name: #NBFFICallout classPool: a Dictionary(#CustomErrorCodes->a Dictionary(600->'An instance of NB...etc... sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'NativeBoost-Core' traitComposition: {} localSelectors: nil NBFFICallout class(NBNativeCodeGen class)>>handleFailureIn:nativeCode: Receiver: NBFFICallout Arguments and temporary variables: aContext: NBGlxAPI>>queryExtension:errorBase:eventBase: aBlock: [:generator | generator sender: sender; callType: self callType; ...etc... method: (NBGlxAPI>>#queryExtension:errorBase:eventBase: "a CompiledMethod(54211...etc... lastError: 502 lit: #(#NativeBoostPlugin #primitiveNativeCall 0 87) Receiver's instance variables: superclass: NBNativeCodeGen methodDict: a MethodDictionary(#aliasForType:->(NBFFICallout>>#aliasForType: "a...etc... format: 148 instanceVariables: #('fnSpec' 'requestor' 'methodArgs' 'coercionMayFail' 'callI...etc... organization: ('type aliases' aliasForType:) ('accessing' anonSpec: callType: c...etc... subclasses: {NBNativeFunctionGen} name: #NBFFICallout classPool: a Dictionary(#CustomErrorCodes->a Dictionary(600->'An instance of NB...etc... sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'NativeBoost-Core' traitComposition: {} localSelectors: nil NBGlxAPI>>call: Receiver: a NBGlxAPI Arguments and temporary variables: fnSpec: #(#bool #glXQueryExtension #(#Display #display #, #int #* #errorBase #,...etc... sender: NBGlxAPI>>queryExtension:errorBase:eventBase: Receiver's instance variables: fnAddresses: #[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...etc... renderingContextHandle: nil extensions: nil NBGlxAPI>>queryExtension:errorBase:eventBase: Receiver: a NBGlxAPI Arguments and temporary variables: display: a NBXLibDisplay( 0x8D4DF78 ) errorBase: a WordArray(0) eventBase: a WordArray(0) Receiver's instance variables: fnAddresses: #[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...etc... renderingContextHandle: nil extensions: nil NBGLXContextDriver>>createContext: Receiver: a NBGLXContextDriver Arguments and temporary variables: initialExtent: (50@40) display: a NBXLibDisplay( 0x8D4DF78 ) window: nil visualInfo: nil colormap: nil xattributes: nil childWin: nil glxSupported: nil configsNumber: nil configs: nil Receiver's instance variables: gl: a NBGlxAPI ctx: nil NBGLContextDriver class>>createContext: Receiver: NBGLContextDriver Arguments and temporary variables: initialExtent: (50@40) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses: {NBMacGLContextDriver. NBGLXContextDriver} name: #NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil NBGLDisplay class>>extent: Receiver: NBGLDisplay Arguments and temporary variables: anInitialExtent: (50@40) driver: nil extensions: nil disp: nil ext: (50@40) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#canUseForm:->(NBGLDisplay>>#canUseForm: "a Comp...etc... format: 136 instanceVariables: #('session' 'extent' 'driver') organization: ('reading pixels' canUseForm: updateForm:bounds:) ('viewport' cha...etc... subclasses: {NBMSAAOffscreenDisplay. NBOffscreenDisplay} name: #NBGLDisplay classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil GLTTRenderingDemo(GLViewportMorph)>>initializeForNewSession Receiver: a GLTTRenderingDemo(684982272) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (693370880) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil frameStats: nil start: nil frameCount: nil GLTTRenderingDemo>>initializeForNewSession Receiver: a GLTTRenderingDemo(684982272) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (693370880) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil frameStats: nil start: nil frameCount: nil GLTTRenderingDemo(GLViewportMorph)>>initialize Receiver: a GLTTRenderingDemo(684982272) Arguments and temporary variables: Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (693370880) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil frameStats: nil start: nil frameCount: nil GLTTRenderingDemo>>initialize Receiver: a GLTTRenderingDemo(684982272) Arguments and temporary variables: fontPath: nil Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (693370880) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil frameStats: nil start: nil frameCount: nil GLTTRenderingDemo class(Behavior)>>new Receiver: GLTTRenderingDemo Arguments and temporary variables: Receiver's instance variables: superclass: GLViewportMorph methodDict: a MethodDictionary(#frameStats->(GLTTRenderingDemo>>#frameStats "a ...etc... format: 164 instanceVariables: #('d' 'glyphCache' 'font' 'curveRenderer' 'frameStats' 'star...etc... organization: ('as yet unclassified' frameStats initialize initializeForNewSess...etc... subclasses: nil name: #GLTTRenderingDemo classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Morphic-Demo' traitComposition: {} localSelectors: nil UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil Compiler>>evaluate:in:to:notifying:ifFail:logged: Receiver: a Compiler Arguments and temporary variables: textOrStream: a ReadWriteStream aContext: nil receiver: nil aRequestor: a TextMorphForEditView(925892608) failBlock: [self morph flash. ^ nil] logFlag: true methodNode: DoIt ^ GLTTRenderingDemo new openInWorld method: (UndefinedObject>>#DoIt "a CompiledMethod(678166528)") value: nil toLog: nil itsSelection: nil itsSelectionString: nil Receiver's instance variables: sourceStream: a ReadWriteStream requestor: a TextMorphForEditView(925892608) class: UndefinedObject category: nil context: nil parser: a Parser [rcvr class evaluatorClass new evaluate: self selectionForDoitAsStream in: ctxt to: rcvr notifying: self morph ifFail: [self morph flash. ^ nil] logged: true] in SmalltalkEditor>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState BlockClosure>>on:do: Receiver: [rcvr class evaluatorClass new evaluate: self selectionForDoitAsStream in: ctxt to: ...etc... Arguments and temporary variables: exception: OutOfScopeNotification handlerAction: [:ex | ex resume: true] handlerActive: true Receiver's instance variables: outerContext: SmalltalkEditor>>evaluateSelectionAndDo: startpc: 110 numArgs: 0 SmalltalkEditor>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [:result | result] result: nil rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor>>evaluateSelection Receiver: a SmalltalkEditor Arguments and temporary variables: Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor>>doIt Receiver: a SmalltalkEditor Arguments and temporary variables: Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor>>doIt: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [keystroke '<Cmd-d>'] Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor(TextEditor)>>performCmdActionsWith:shifted:return: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [keystroke '<Cmd-d>'] aBoolean: false return: [:val | ^ val] asciiValue: 101 actions: #(#noop: #cursorHome: #noop: #noop: #cursorEnd: #noop: #noop: #noop: #...etc... action: #doIt: Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor(TextEditor)>>dispatchCommandOn:return: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [keystroke '<Cmd-d>'] return: [:val | ^ val] asciiValue: 100 honorCommandKeys: true char: nil Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor(TextEditor)>>dispatchOn: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [keystroke '<Cmd-d>'] char: nil return: [:val | ^ val] keyEvents: nil Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState [self dispatchOn: aKeyboardEvent] in SmalltalkEditor(TextEditor)>>keystroke: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [keystroke '<Cmd-d>'] Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor(TextEditor)>>handleKeystrokeAction: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [self dispatchOn: aKeyboardEvent] Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor(TextEditor)>>handleEditionAction:fromKeyboardEvent: Receiver: a SmalltalkEditor Arguments and temporary variables: anAction: [self dispatchOn: aKeyboardEvent] aKeyboardEvent: [keystroke '<Cmd-d>'] Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor(TextEditor)>>keystroke: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [keystroke '<Cmd-d>'] Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState [editor keystroke: evt] in [| action | evt keyValue = 13 ifTrue: [action := self crAction. action ifNotNil: [evt hand newKeyboardFocus: nil. ^ action value]]. self handleInteraction: [editor keystroke: evt]. self updateFromParagraph. super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke: Receiver: a TextMorphForEditView(925892608) Arguments and temporary variables: evt: [keystroke '<Cmd-d>'] Receiver's instance variables: bounds: (0@0) corner: (681@114) owner: a TransformMorph(623902720) submorphs: #() fullBounds: (0@0) corner: (681@114) color: Color black extension: a MorphExtension (945815552) [other: (blinkStart -> 564954) (myDepe...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'Gofer it squeaksource: ''NBOpenGL''; package: ''Configuration...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editView: a PluggableTextMorph(171180032) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil TextMorphForEditView(TextMorph)>>handleInteraction: Receiver: a TextMorphForEditView(925892608) Arguments and temporary variables: interactionBlock: [editor keystroke: evt] oldEditor: a SmalltalkEditor oldParagraph: a Paragraph oldText: a Text for 'Gofer it squeaksource: ''NBOpenGL''; package: ''Configurat...etc... Receiver's instance variables: bounds: (0@0) corner: (681@114) owner: a TransformMorph(623902720) submorphs: #() fullBounds: (0@0) corner: (681@114) color: Color black extension: a MorphExtension (945815552) [other: (blinkStart -> 564954) (myDepe...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'Gofer it squeaksource: ''NBOpenGL''; package: ''Configuration...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editView: a PluggableTextMorph(171180032) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil TextMorphForEditView>>handleInteraction: Receiver: a TextMorphForEditView(925892608) Arguments and temporary variables: interActionBlock: [editor keystroke: evt] Receiver's instance variables: bounds: (0@0) corner: (681@114) owner: a TransformMorph(623902720) submorphs: #() fullBounds: (0@0) corner: (681@114) color: Color black extension: a MorphExtension (945815552) [other: (blinkStart -> 564954) (myDepe...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'Gofer it squeaksource: ''NBOpenGL''; package: ''Configuration...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editView: a PluggableTextMorph(171180032) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil [| action | evt keyValue = 13 ifTrue: [action := self crAction. action ifNotNil: [evt hand newKeyboardFocus: nil. ^ action value]]. self handleInteraction: [editor keystroke: evt]. self updateFromParagraph. super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke: Receiver: a TextMorphForEditView(925892608) Arguments and temporary variables: evt: [keystroke '<Cmd-d>'] action: nil Receiver's instance variables: bounds: (0@0) corner: (681@114) owner: a TransformMorph(623902720) submorphs: #() fullBounds: (0@0) corner: (681@114) color: Color black extension: a MorphExtension (945815552) [other: (blinkStart -> 564954) (myDepe...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'Gofer it squeaksource: ''NBOpenGL''; package: ''Configuration...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editView: a PluggableTextMorph(171180032) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil ToolRegistry>>codeCompletionAround:textMorph:keyStroke: Receiver: a ToolRegistry Arguments and temporary variables: aBlock: [| action | evt keyValue = 13 ifTrue: [action := self crAction. ac...etc... aTextMorph: a TextMorphForEditView(925892608) evt: [keystroke '<Cmd-d>'] Receiver's instance variables: tools: an IdentityDictionary(#basicInspector->BasicInspector #browser->[self de...etc... inspectorsMap: an IdentityDictionary(#CompiledMethod->#CompiledMethodInspector ...etc... SmalltalkEditor>>codeCompletionAround:textMorph:keyStroke: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [| action | evt keyValue = 13 ifTrue: [action := self crAction. ac...etc... aTextMorph: a TextMorphForEditView(925892608) anEvent: [keystroke '<Cmd-d>'] Receiver's instance variables: morph: a TextMorphForEditView(925892608) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState TextMorphForEditView(TextMorph)>>keyStroke: Receiver: a TextMorphForEditView(925892608) Arguments and temporary variables: evt: [keystroke '<Cmd-d>'] Receiver's instance variables: bounds: (0@0) corner: (681@114) owner: a TransformMorph(623902720) submorphs: #() fullBounds: (0@0) corner: (681@114) color: Color black extension: a MorphExtension (945815552) [other: (blinkStart -> 564954) (myDepe...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'Gofer it squeaksource: ''NBOpenGL''; package: ''Configuration...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editView: a PluggableTextMorph(171180032) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil TextMorphForEditView>>keyStroke: Receiver: a TextMorphForEditView(925892608) Arguments and temporary variables: evt: [keystroke '<Cmd-d>'] view: a PluggableTextMorph(171180032) Receiver's instance variables: bounds: (0@0) corner: (681@114) owner: a TransformMorph(623902720) submorphs: #() fullBounds: (0@0) corner: (681@114) color: Color black extension: a MorphExtension (945815552) [other: (blinkStart -> 564954) (myDepe...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'Gofer it squeaksource: ''NBOpenGL''; package: ''Configuration...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editView: a PluggableTextMorph(171180032) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil TextMorphForEditView(TextMorph)>>handleKeystroke: Receiver: a TextMorphForEditView(925892608) Arguments and temporary variables: anEvent: [keystroke '<Cmd-d>'] pasteUp: nil Receiver's instance variables: bounds: (0@0) corner: (681@114) owner: a TransformMorph(623902720) submorphs: #() fullBounds: (0@0) corner: (681@114) color: Color black extension: a MorphExtension (945815552) [other: (blinkStart -> 564954) (myDepe...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'Gofer it squeaksource: ''NBOpenGL''; package: ''Configuration...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editView: a PluggableTextMorph(171180032) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil --- The full stack --- NBFFICallout(Object)>>error: NBFFICallout>>generateCall:module: [:generator | generator sender: sender; callType: self callType; generateCall: fnSpec module: self moduleName] in NBGlxAPI>>call: NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry: NBFFICallout class(NBNativeCodeGen class)>>handleFailureIn:nativeCode: NBGlxAPI>>call: NBGlxAPI>>queryExtension:errorBase:eventBase: NBGLXContextDriver>>createContext: NBGLContextDriver class>>createContext: NBGLDisplay class>>extent: GLTTRenderingDemo(GLViewportMorph)>>initializeForNewSession GLTTRenderingDemo>>initializeForNewSession GLTTRenderingDemo(GLViewportMorph)>>initialize GLTTRenderingDemo>>initialize GLTTRenderingDemo class(Behavior)>>new UndefinedObject>>DoIt Compiler>>evaluate:in:to:notifying:ifFail:logged: [rcvr class evaluatorClass new evaluate: self selectionForDoitAsStream in: ctxt to: rcvr notifying: self morph ifFail: [self morph flash. ^ nil] logged: true] in SmalltalkEditor>>evaluateSelectionAndDo: BlockClosure>>on:do: SmalltalkEditor>>evaluateSelectionAndDo: SmalltalkEditor>>evaluateSelection SmalltalkEditor>>doIt SmalltalkEditor>>doIt: SmalltalkEditor(TextEditor)>>performCmdActionsWith:shifted:return: SmalltalkEditor(TextEditor)>>dispatchCommandOn:return: SmalltalkEditor(TextEditor)>>dispatchOn: [self dispatchOn: aKeyboardEvent] in SmalltalkEditor(TextEditor)>>keystroke: SmalltalkEditor(TextEditor)>>handleKeystrokeAction: SmalltalkEditor(TextEditor)>>handleEditionAction:fromKeyboardEvent: SmalltalkEditor(TextEditor)>>keystroke: [editor keystroke: evt] in [| action | evt keyValue = 13 ifTrue: [action := self crAction. action ifNotNil: [evt hand newKeyboardFocus: nil. ^ action value]]. self handleInteraction: [editor keystroke: evt]. self updateFromParagraph. super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke: TextMorphForEditView(TextMorph)>>handleInteraction: TextMorphForEditView>>handleInteraction: [| action | evt keyValue = 13 ifTrue: [action := self crAction. action ifNotNil: [evt hand newKeyboardFocus: nil. ^ action value]]. self handleInteraction: [editor keystroke: evt]. self updateFromParagraph. super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke: ToolRegistry>>codeCompletionAround:textMorph:keyStroke: SmalltalkEditor>>codeCompletionAround:textMorph:keyStroke: TextMorphForEditView(TextMorph)>>keyStroke: TextMorphForEditView>>keyStroke: TextMorphForEditView(TextMorph)>>handleKeystroke: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KeyboardEvent>>sentTo: TextMorphForEditView(Morph)>>handleEvent: TextMorphForEditView(Morph)>>handleFocusEvent: [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendKeyboardEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in MorphicUIManager>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess
oh god sorry for that call stack ^ ! I just noticed I'm getting this error too: ioLoadModule(/usr/lib/nvidia-current-updates/libGL.so): /usr/lib/nvidia-current-updates/libGL.so: wrong ELF class: ELFCLASS64 in the console, so it's a 32/64 bit thing. I'm on 64bit ubuntu, and I have ia32-libs installed
On 27 March 2012 09:16, chadwick <mathnoir@gmail.com> wrote:
oh god sorry for that call stack ^ !
I just noticed I'm getting this error too: ioLoadModule(/usr/lib/nvidia-current-updates/libGL.so): Â /usr/lib/nvidia-current-updates/libGL.so: wrong ELF class: ELFCLASS64
in the console, so it's a 32/64 bit thing. I'm on 64bit ubuntu, and I have ia32-libs installed
yeah.. but make sure you linking with right 32bit lib.. otherwise you will get things like that. it would be nice to have VM running natively on 64 bits.. but we're not there yet. -- Best regards, Igor Stasenko.
yeah.. but make sure you linking with right 32bit lib.. otherwise you will get things like that.
ok I changed the FFI path to OpenGL library to /usr/lib32/nvidia-current-updates/libGL.so.1/usr/lib32/nvidia-current-updates/libGL.so.1 and now GLTTRenderingDemo new openInWorld. does something, i.e. there's no error either in Pharo or in the console, but I don't see anything, there's just a sense that something is being computed as the machine runs slower.
Well, two things should happen: a native window should be opened which shows nothing (context creation should be fixed to not create it), and also a morph should be opened in world, rendering some text through opengl. Does the window get opened? does the image freeze? On Fri, May 18, 2012 at 2:34 AM, chadwick <mathnoir@gmail.com> wrote:
yeah.. but make sure you linking with right 32bit lib.. otherwise you will get things like that.
ok I changed the FFI path to OpenGL library to
/usr/lib32/nvidia-current-updates/libGL.so.1/usr/lib32/nvidia-current-updates/libGL.so.1
and now
GLTTRenderingDemo new openInWorld.
does something, i.e. there's no error either in Pharo or in the console, but I don't see anything, there's just a sense that something is being computed as the machine runs slower.
-- Lic. Javier Pimás Ciudad de Buenos Aires
On Sat, May 19, 2012 at 2:35 AM, Javier Pimás <elpochodelagente@gmail.com>wrote:
Well, two things should happen: a native window should be opened which shows nothing (context creation should be fixed to not create it), and also a morph should be opened in world, rendering some text through opengl.
Does the window get opened? does the image freeze?
no the image does not freeze initially, but it does after a few minutes. It runs slowly though. No other windows open and there is no error in the terminal.
more detail: after I do GLTTRenderingDemo new openInWorld, I tried dragging a window around in a circle so as to get a feel for what the CPU is doing. The image pauses for increasingly longer times, making the UI unresponsive during this time, eventually locking up entirely.
Could you put a self halt in NBGLXContextDriver>>createContext: and step over line by line to see which one is the offending one? On Mon, May 21, 2012 at 12:55 AM, chadwick <mathnoir@gmail.com> wrote:
more detail: after I do GLTTRenderingDemo new openInWorld, I tried dragging a window around in a circle so as to get a feel for what the CPU is doing. The image pauses for increasingly longer times, making the UI unresponsive during this time, eventually locking up entirely.
-- Lic. Javier Pimás Ciudad de Buenos Aires
On Mon, May 21, 2012 at 10:04 PM, Javier Pimás <elpochodelagente@gmail.com>wrote:
Could you put a self halt in NBGLXContextDriver>>createContext: and step over line by line to see which one is the offending one?
ok the line is: colormap := display createColormapOn: window visual: visualInfo visual alloc: AllocNone. and at that point the relevant local variables: window is 634 display is a NBXLibDisplay( 0x896EFD0 ) it hangs when I touch visualInfo in the debugger, then eventually the VM crashes with the following in the terminal: out of memory C stack backtrace: ./NBCog/NBCog[0x8095489] ./NBCog/NBCog(error+0x19)[0x8095709] ./NBCog/NBCog[0x8075a5e] ./NBCog/NBCog(createClosureNumArgsnumCopiedstartpc+0x54)[0x8076ab4] ./NBCog/NBCog[0x8066bed] [0xb57ab5e9] ./NBCog/NBCog[0x808f694] ./NBCog/NBCog(main+0x38a)[0x809668a] /lib32/libc.so.6(__libc_start_main+0xf3)[0xf75800f3] Smalltalk stack dump: 0xffe7ac34 M Delay>schedule -1218533460: a(n) Delay 0xffe7ac4c M Delay>wait -1218533460: a(n) Delay 0xffe7ac64 M InputEventPollingFetcher>waitForInput -1247953104: a(n) InputEventPollingFetcher 0xffe7ac90 I InputEventPollingFetcher(InputEventFetcher)>eventLoop -1247953104: a(n) InputEventPollingFetcher 0xffe7acb0 I [] in InputEventPollingFetcher(InputEventFetcher)>installEventLoop -1247953104: a(n) InputEventPollingFetcher 0xffe7acd0 I [] in BlockClosure>newProcess -1218533756: a(n) BlockClosure Most recent primitives wait signal millisecondClockValue millisecondClockValue primSignal:atMilliseconds: millisecondClockValue wait signal wait basicNew millisecondClockValue signal primSignal:atMilliseconds: millisecondClockValue wait primGetNextEvent: at: class wait signal ... (this cycle repeats) Aborted
Then probably the visualInfo has some problem. The symptom is that printOn: (inherited from NBExternalStructure) crashes while trying to show the fields. Now try niling the visualInfo visual field with code (visualInfo visual:nil) to see if it keeps crashing. Also, what is the contents of NBXLibVisualInfo class>>#fieldsDesc ? You can send me the image via yousendit (I'll may look at it if I get some free time). Cheers. On Mon, May 21, 2012 at 10:38 PM, chadwick <mathnoir@gmail.com> wrote:
On Mon, May 21, 2012 at 10:04 PM, Javier Pimás <elpochodelagente@gmail.com
wrote:
Could you put a self halt in NBGLXContextDriver>>createContext: and step over line by line to see which one is the offending one?
ok the line is: colormap := display createColormapOn: window visual: visualInfo visual alloc: AllocNone.
and at that point the relevant local variables:
window is 634 display is a NBXLibDisplay( 0x896EFD0 )
it hangs when I touch visualInfo in the debugger, then eventually the VM crashes with the following in the terminal:
out of memory
C stack backtrace: ./NBCog/NBCog[0x8095489] ./NBCog/NBCog(error+0x19)[0x8095709] ./NBCog/NBCog[0x8075a5e] ./NBCog/NBCog(createClosureNumArgsnumCopiedstartpc+0x54)[0x8076ab4] ./NBCog/NBCog[0x8066bed] [0xb57ab5e9] ./NBCog/NBCog[0x808f694] ./NBCog/NBCog(main+0x38a)[0x809668a] /lib32/libc.so.6(__libc_start_main+0xf3)[0xf75800f3]
Smalltalk stack dump: 0xffe7ac34 M Delay>schedule -1218533460: a(n) Delay 0xffe7ac4c M Delay>wait -1218533460: a(n) Delay 0xffe7ac64 M InputEventPollingFetcher>waitForInput -1247953104: a(n) InputEventPollingFetcher 0xffe7ac90 I InputEventPollingFetcher(InputEventFetcher)>eventLoop -1247953104: a(n) InputEventPollingFetcher 0xffe7acb0 I [] in InputEventPollingFetcher(InputEventFetcher)>installEventLoop -1247953104: a(n) InputEventPollingFetcher 0xffe7acd0 I [] in BlockClosure>newProcess -1218533756: a(n) BlockClosure
Most recent primitives wait signal millisecondClockValue millisecondClockValue primSignal:atMilliseconds: millisecondClockValue wait signal wait basicNew millisecondClockValue signal primSignal:atMilliseconds: millisecondClockValue wait primGetNextEvent: at: class wait signal ... (this cycle repeats) Aborted
-- Lic. Javier Pimás Ciudad de Buenos Aires
On Tue, May 22, 2012 at 12:17 PM, Javier Pimás <elpochodelagente@gmail.com>wrote:
Then probably the visualInfo has some problem. The symptom is that printOn: (inherited from NBExternalStructure) crashes while trying to show the fields. Now try niling the visualInfo visual field with code (visualInfo visual:nil) to see if it keeps crashing.
I can't - I tried moving self halt to after the creation of visualInfo, and then self halt is never executed and the image progressively slows as before, indicating that visualInfo was never initialized. What I also neglected to add before was that in visualInfo := NBXLibVisualInfo fromPointer: it goes into handleFailureIn: nativeCode: from NBFFICallout cdelc: emitCall: options: in NativeBoostLinux32 and eventually hangs
Also, what is the contents of NBXLibVisualInfo class>>#fieldsDesc ?
fieldsDesc " self initializeAccessors " ^#( NBXLibVisual "Visual*" visual; VisualID visualid; int screen; uint depth; int class; ulong red_mask; ulong green_mask; ulong blue_mask; int colormap_size; int bits_per_rgb )
You can send me the image via yousendit (I'll may look at it if I get some free time).
yes will do that later..
On Tue, May 22, 2012 at 12:05 AM, chadwick <mathnoir@gmail.com> wrote:
On Tue, May 22, 2012 at 12:17 PM, Javier Pimás <elpochodelagente@gmail.com
wrote:
Then probably the visualInfo has some problem. The symptom is that printOn: (inherited from NBExternalStructure) crashes while trying to show the fields. Now try niling the visualInfo visual field with code (visualInfo visual:nil) to see if it keeps crashing.
I can't - I tried moving self halt to after the creation of visualInfo, and then self halt is never executed and the image progressively slows as before, indicating that visualInfo was never initialized.
What I also neglected to add before was that in visualInfo := NBXLibVisualInfo fromPointer: it goes into handleFailureIn: nativeCode: from NBFFICallout cdelc: emitCall: options: in NativeBoostLinux32 and eventually hangs
Also, what is the contents of NBXLibVisualInfo class>>#fieldsDesc ?
fieldsDesc " self initializeAccessors " ^#( NBXLibVisual "Visual*" visual; VisualID visualid; int screen; uint depth; int class; ulong red_mask; ulong green_mask; ulong blue_mask; int colormap_size; int bits_per_rgb )
this is good news! change "int class" to "int klass" and it'll probably start working. It's creating an accessor named "class", which breaks everything. It's a problem we saw before, I'll have to check because I thought I had uploaded the latest versions of monticello and the configuration. How did you load the code? Cheers!
You can send me the image via yousendit (I'll may look at it if I get some free time).
yes will do that later..
-- Lic. Javier Pimás Ciudad de Buenos Aires
On 22 May 2012 05:19, Javier Pimás <elpochodelagente@gmail.com> wrote:
On Tue, May 22, 2012 at 12:05 AM, chadwick <mathnoir@gmail.com> wrote:
On Tue, May 22, 2012 at 12:17 PM, Javier Pimás <elpochodelagente@gmail.com> wrote:
Then probably the visualInfo has some problem. The symptom is that printOn: (inherited from NBExternalStructure) crashes while trying to show the fields. Now try niling the visualInfo visual field with code (visualInfo visual:nil) to see if it keeps crashing.
I can't - I tried moving self halt to after the creation of visualInfo, and then self halt is never executed and the image progressively slows as before, indicating that visualInfo was never initialized.
What I also neglected to add before was that in visualInfo := NBXLibVisualInfo fromPointer: it goes into handleFailureIn: nativeCode: from NBFFICallout cdelc: emitCall: options: in NativeBoostLinux32 and eventually hangs
Also, what is the contents of NBXLibVisualInfo class>>#fieldsDesc ?
fieldsDesc    "    self initializeAccessors    "    ^#(    NBXLibVisual "Visual*" visual;    VisualID visualid;    int screen;    uint depth;    int class;    ulong red_mask;    ulong green_mask;    ulong blue_mask;    int colormap_size;    int bits_per_rgb    )
this is good news! change "int class" to "int klass" and it'll probably start working. It's creating an accessor named "class", which breaks everything. It's a problem we saw before, I'll have to check because I thought I had uploaded the latest versions of monticello and the configuration. How did you load the code?
Hehe.. and i trapped myself with this too.. spent halt an hour trying to figure out why it goes into infinite recursion when generating the code, until recalled that we had this issue before ! :) Name: NBXLib-Core-JavierPimas.5 Author: JavierPimas Time: 16 April 2012, 10:54:45 am UUID: 94ca7907-d790-4740-8a63-51b1a2ec4a48 Ancestors: NBXLib-Core-JavierPimas.4 Rename field "class" in NBXLibVisualInfo to be klass so it doesn't break in pharo 1.4
Cheers!
You can send me the image via yousendit (I'll may look at it if I get some free time).
yes will do that later..
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Best regards, Igor Stasenko.
admittedly I haven't loaded the very latest version! I tried changing class to clazz & now it fails with Generic Failure at NBFFICallout cdecl: functionSpec emitCall: aCallEmittingBlock options: anOptions handleFailureIn: aContext nativeCode: aBlock ^ NBNativeCodeError signalError: lastError and in the terminal: X Error: BadMatch (invalid parameter attributes) Major opcode of failed request: 78 Minor opcode of failed request: 0 Serial number of failed request: 17 X Error: BadColor (invalid Colormap parameter) Major opcode of failed request: 1 Minor opcode of failed request: 0 Serial number of failed request: 18 X Error: BadWindow (invalid Window parameter) Major opcode of failed request: 8 Minor opcode of failed request: 0 Serial number of failed request: 19 X Error: BadValue (integer parameter out of range for operation) Major opcode of failed request: 135 Minor opcode of failed request: 3 Serial number of failed request: 32 So then I tried starting again with a fresh 1.4 image, following the instructions at the top, but then: registerPrimitiveSimulators ContextPart simulatePrimitive: #primitiveNativeCall module: #NativeBoostPlugin with: self during ConfigurationOfNBOpenGL project lastVersion load. On Tue, May 22, 2012 at 1:25 PM, Igor Stasenko <siguctua@gmail.com> wrote:
On 22 May 2012 05:19, Javier Pimás <elpochodelagente@gmail.com> wrote:
On Tue, May 22, 2012 at 12:05 AM, chadwick <mathnoir@gmail.com> wrote:
On Tue, May 22, 2012 at 12:17 PM, Javier Pimás <elpochodelagente@gmail.com> wrote:
Then probably the visualInfo has some problem. The symptom is that printOn: (inherited from NBExternalStructure) crashes while trying to
show
the fields. Now try niling the visualInfo visual field with code (visualInfo visual:nil) to see if it keeps crashing.
I can't - I tried moving self halt to after the creation of visualInfo, and then self halt is never executed and the image progressively slows as before, indicating that visualInfo was never initialized.
What I also neglected to add before was that in visualInfo := NBXLibVisualInfo fromPointer: it goes into handleFailureIn: nativeCode: from NBFFICallout cdelc: emitCall: options: in NativeBoostLinux32 and eventually hangs
Also, what is the contents of NBXLibVisualInfo class>>#fieldsDesc ?
fieldsDesc " self initializeAccessors " ^#( NBXLibVisual "Visual*" visual; VisualID visualid; int screen; uint depth; int class; ulong red_mask; ulong green_mask; ulong blue_mask; int colormap_size; int bits_per_rgb )
this is good news! change "int class" to "int klass" and it'll probably start working. It's creating an accessor named "class", which breaks everything. It's a problem we saw before, I'll have to check because I thought I had uploaded the latest versions of monticello and the configuration. How did you load the code?
Hehe.. and i trapped myself with this too.. spent halt an hour trying to figure out why it goes into infinite recursion when generating the code, until recalled that we had this issue before ! :)
Name: NBXLib-Core-JavierPimas.5 Author: JavierPimas Time: 16 April 2012, 10:54:45 am UUID: 94ca7907-d790-4740-8a63-51b1a2ec4a48 Ancestors: NBXLib-Core-JavierPimas.4
Rename field "class" in NBXLibVisualInfo to be klass so it doesn't break in pharo 1.4
Cheers!
You can send me the image via yousendit (I'll may look at it if I get some free time).
yes will do that later..
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Best regards, Igor Stasenko.
On 22 May 2012 06:41, chadwick <mathnoir@gmail.com> wrote:
admittedly I haven't loaded the very latest version!
I tried changing class to clazz & now it fails with Generic Failure at NBFFICallout
cdecl: functionSpec emitCall: aCallEmittingBlock options: anOptions handleFailureIn: aContext nativeCode: aBlock ^ NBNativeCodeError signalError: lastError
and in the terminal:
X Error: BadMatch (invalid parameter attributes) Â Major opcode of failed request:Â 78 Â Minor opcode of failed request:Â 0 Â Serial number of failed request: 17 X Error: BadColor (invalid Colormap parameter) Â Major opcode of failed request:Â 1 Â Minor opcode of failed request:Â 0 Â Serial number of failed request: 18 X Error: BadWindow (invalid Window parameter) Â Major opcode of failed request:Â 8 Â Minor opcode of failed request:Â 0 Â Serial number of failed request: 19 X Error: BadValue (integer parameter out of range for operation) Â Major opcode of failed request:Â 135 Â Minor opcode of failed request:Â 3 Â Serial number of failed request: 32
So then I tried starting again with a fresh 1.4 image, following the instructions at the top, but then:
registerPrimitiveSimulators
   ContextPart simulatePrimitive: #primitiveNativeCall module: #NativeBoostPlugin with: self
during ConfigurationOfNBOpenGL project lastVersion load.
and? this should be working just fine since its integrated in 1.4: http://code.google.com/p/pharo/issues/detail?id=5459
On Tue, May 22, 2012 at 1:25 PM, Igor Stasenko <siguctua@gmail.com> wrote:
On 22 May 2012 05:19, Javier Pimás <elpochodelagente@gmail.com> wrote:
On Tue, May 22, 2012 at 12:05 AM, chadwick <mathnoir@gmail.com> wrote:
On Tue, May 22, 2012 at 12:17 PM, Javier Pimás <elpochodelagente@gmail.com> wrote:
Then probably the visualInfo has some problem. The symptom is that printOn: (inherited from NBExternalStructure) crashes while trying to show the fields. Now try niling the visualInfo visual field with code (visualInfo visual:nil) to see if it keeps crashing.
I can't - I tried moving self halt to after the creation of visualInfo, and then self halt is never executed and the image progressively slows as before, indicating that visualInfo was never initialized.
What I also neglected to add before was that in visualInfo := NBXLibVisualInfo fromPointer: it goes into handleFailureIn: nativeCode: from NBFFICallout cdelc: emitCall: options: in NativeBoostLinux32 and eventually hangs
Also, what is the contents of NBXLibVisualInfo class>>#fieldsDesc ?
fieldsDesc    "    self initializeAccessors    "    ^#(    NBXLibVisual "Visual*" visual;    VisualID visualid;    int screen;    uint depth;    int class;    ulong red_mask;    ulong green_mask;    ulong blue_mask;    int colormap_size;    int bits_per_rgb    )
this is good news! change "int class" to "int klass" and it'll probably start working. It's creating an accessor named "class", which breaks everything. It's a problem we saw before, I'll have to check because I thought I had uploaded the latest versions of monticello and the configuration. How did you load the code?
Hehe.. and i trapped myself with this too.. spent halt an hour trying to figure out why it goes into infinite recursion when generating the code, until recalled that we had this issue before ! :)
Name: NBXLib-Core-JavierPimas.5 Author: JavierPimas Time: 16 April 2012, 10:54:45 am UUID: 94ca7907-d790-4740-8a63-51b1a2ec4a48 Ancestors: NBXLib-Core-JavierPimas.4
Rename field "class" in NBXLibVisualInfo to be klass so it doesn't break in pharo 1.4
Cheers!
You can send me the image via yousendit (I'll may look at it if I get some free time).
yes will do that later..
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Best regards, Igor Stasenko.
-- Best regards, Igor Stasenko.
Success!! I started from a freshly downloaded image: 1. Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load. ConfigurationOfNBOpenGL project lastVersion load. then 2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello 4. changed glXFunctions to glxFunctions in NBGlx 5. changed tahoma font to one I had on my Ubuntu12.04 install 6. changed the path to OpenGL lib to /usr/lib32/nvidia-current/libGL.so Zooming text displayed, as well as another popup window. Time to get reading and then coding. Thankyou all very much for your patience!
On 22 May 2012 13:39, chadwick <mathnoir@gmail.com> wrote:
Success!!
I started from a freshly downloaded image:
1. Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load. ConfigurationOfNBOpenGL project lastVersion load.
as i said before, don't use #lastVersion. ConfigurationOfNBOpenGL project lastVersion <>1.2-baseline [ConfigurationOfNBOpenGL] if you would spend time browsing it, you would figure out that there is ConfigurationOfNBOpenGL project version: '1.0.3' >=1.0.3 [ConfigurationOfNBOpenGL] and you could avoid manual steps which you listed below :) @Javier, the NBOpenGL config 1.0.3 imports the spec project: 'ConfigurationOfNBXLib default' with: '0.0.1'. which loads spec package: 'NBXLib-Core' with: 'NBXLib-Core-JavierPimas.4'. i guess you can just change the package number to .5 in that version, without bumping metacello version, because .4 is buggy anyways.
then
2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello
4. changed glXFunctions to glxFunctions in NBGlx
5. changed tahoma font to one I had on my Ubuntu12.04 install 6. changed the path to OpenGL lib to /usr/lib32/nvidia-current/libGL.so
Zooming text displayed, as well as another popup window.
Time to get reading and then coding.
Thankyou all very much for your patience!
-- Best regards, Igor Stasenko.
On Tue, May 22, 2012 at 8:53 AM, Igor Stasenko <siguctua@gmail.com> wrote:
On 22 May 2012 13:39, chadwick <mathnoir@gmail.com> wrote:
Success!!
Cool! Glad you made it, we need users, because without users pushing code just wouldn't make sense.
I started from a freshly downloaded image:
1. Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL';
load.
ConfigurationOfNBOpenGL project lastVersion load.
as i said before, don't use #lastVersion.
ConfigurationOfNBOpenGL project lastVersion <>1.2-baseline [ConfigurationOfNBOpenGL]
if you would spend time browsing it, you would figure out that there is
ConfigurationOfNBOpenGL project version: '1.0.3' >=1.0.3 [ConfigurationOfNBOpenGL]
and you could avoid manual steps which you listed below :)
@Javier, the NBOpenGL config 1.0.3 imports the spec project: 'ConfigurationOfNBXLib default' with: '0.0.1'. which loads spec package: 'NBXLib-Core' with: 'NBXLib-Core-JavierPimas.4'.
i guess you can just change the package number to .5 in that version, without bumping metacello version, because .4 is buggy anyways.
Yes, I checked and had already done that. It's Ok because he's been trying since before we fixed the last bugs, but from a fresh 1.4 image people can load everything with this: Gofer new squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load. (ConfigurationOfNBOpenGL project version: '1.0.3') load. And it should work out of the box.
then
2. load NBXLib package from monticello 3. load NBOpengl-X package from monticello
4. changed glXFunctions to glxFunctions in NBGlx
5. changed tahoma font to one I had on my Ubuntu12.04 install 6. changed the path to OpenGL lib to /usr/lib32/nvidia-current/libGL.so
Zooming text displayed, as well as another popup window.
Time to get reading and then coding.
Thankyou all very much for your patience!
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
On 22 May 2012 14:59, Javier Pimás <elpochodelagente@gmail.com> wrote:
On Tue, May 22, 2012 at 8:53 AM, Igor Stasenko <siguctua@gmail.com> wrote:
On 22 May 2012 13:39, chadwick <mathnoir@gmail.com> wrote:
Success!!
Cool! Glad you made it, we need users, because without users pushing code just wouldn't make sense.
Indeed.
I started from a freshly downloaded image:
1. Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load. ConfigurationOfNBOpenGL project lastVersion load.
as i said before, don't use #lastVersion.
ConfigurationOfNBOpenGL project lastVersion <>1.2-baseline [ConfigurationOfNBOpenGL]
if you would spend time browsing it, you would figure out that there is
ConfigurationOfNBOpenGL project version: '1.0.3' >=1.0.3 [ConfigurationOfNBOpenGL]
and you could avoid manual steps which you listed below :)
@Javier, the NBOpenGL config 1.0.3 imports the spec project: 'ConfigurationOfNBXLib default'  with: '0.0.1'. which loads     spec package: 'NBXLib-Core' with: 'NBXLib-Core-JavierPimas.4'.
i guess you can just change the package number to .5 in that version, without bumping metacello version, because .4 is buggy anyways.
Yes, I checked and had already done that. It's Ok because he's been trying since before we fixed the last bugs, but from a fresh 1.4 image people can load everything with this:
Gofer new  squeaksource: 'NBOpenGL';  package: 'ConfigurationOfNBOpenGL';  load.
(ConfigurationOfNBOpenGL project version: '1.0.3') load.
And it should work out of the box.
a music to my ears :) I am thinking about overriding #lastVersion with own implementation.. so it will work as intended (by us).. -- Best regards, Igor Stasenko.
On 18 May 2012 07:34, chadwick <mathnoir@gmail.com> wrote:
yeah.. but make sure you linking with right 32bit lib.. otherwise you will get things like that.
ok I changed the FFI path to OpenGL library to /usr/lib32/nvidia-current-updates/libGL.so.1/usr/lib32/nvidia-current-updates/libGL.so.1
and now
GLTTRenderingDemo new openInWorld.
does something, i.e. there's no error either in Pharo or in the console, but I don't see anything, there's just a sense that something is being computed as the machine runs slower.
hard to say anything. looks like it renders something somewhere but then results are lost. -- Best regards, Igor Stasenko.
it depends. Sometimes, passing a wrong type of argument through nbffi (because of a badly wrapped signature), breaks the VM, almost but not completely freezing it while consuming 100% CPU. Maybe this is happening, but in that case the native window would probably not open. On Fri, May 18, 2012 at 5:29 PM, Igor Stasenko <siguctua@gmail.com> wrote:
On 18 May 2012 07:34, chadwick <mathnoir@gmail.com> wrote:
yeah.. but make sure you linking with right 32bit lib.. otherwise you will get things like that.
ok I changed the FFI path to OpenGL library to
/usr/lib32/nvidia-current-updates/libGL.so.1/usr/lib32/nvidia-current-updates/libGL.so.1
and now
GLTTRenderingDemo new openInWorld.
does something, i.e. there's no error either in Pharo or in the console,
but
I don't see anything, there's just a sense that something is being computed as the machine runs slower.
hard to say anything. looks like it renders something somewhere but then results are lost.
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
On 19 May 2012 01:24, Javier Pimás <elpochodelagente@gmail.com> wrote:
it depends. Sometimes, passing a wrong type of argument through nbffi (because of a badly wrapped signature), breaks the VM, almost but not completely freezing it while consuming 100% CPU. Maybe this is happening, but in that case the native window would probably not open.
basically , among infinite possibilities of a memory corruption, an operating systems + VM can detect only few: - memory overflow - access to invalid memory address and one which cannot be detected: - an infinite loop the rest is up to the human's decree about what is correct behavior and what is not.. To address that we usually write tests. :) But it is hard, especially in domain of FFI, where external function/library is completely opaque ( you cannot see what happens there, and what is involved there). Especially that most of functions are far from being fault tolerant and idiot proof: if you pass nil pointer to some function which expects only a valid address, it will most probably just crash the whole thing instead of throwing nice exception, which you can handle and therefore build your tests cases on top of it. ah yes.. btw.. if you think that VM is busy doing something but irresponsible, you can send a SIGUSR1 to it to see what it does.
On Fri, May 18, 2012 at 5:29 PM, Igor Stasenko <siguctua@gmail.com> wrote:
On 18 May 2012 07:34, chadwick <mathnoir@gmail.com> wrote:
yeah.. but make sure you linking with right 32bit lib.. otherwise you will get things like that.
ok I changed the FFI path to OpenGL library to
/usr/lib32/nvidia-current-updates/libGL.so.1/usr/lib32/nvidia-current-updates/libGL.so.1
and now
GLTTRenderingDemo new openInWorld.
does something, i.e. there's no error either in Pharo or in the console, but I don't see anything, there's just a sense that something is being computed as the machine runs slower.
hard to say anything. looks like it renders something somewhere but then results are lost.
-- Best regards, Igor Stasenko.
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Best regards, Igor Stasenko.
enough of the huge stack backtraces please... On Tue, Jan 31, 2012 at 1:29 AM, dimitris chloupis <thekilon@yahoo.co.uk>wrote:
I wanted to ask if NB and COG will support windows as well, I see no windows build.
and here we go with first problem. I am in linux mint 12 32 bit with a graphic card NVIDIA GEFORCE 6200 .
I got Cog VM with the Nativeboost plugin + Pharo 1.4 image + Nativeboost + NBOpenGL
This is my workspace
---- Gofer it squeaksource: 'NativeBoost'; package: 'NativeBoost-Installer'; load.
NBInstaller install.
Gofer it squeaksource: 'NBOpenGL'; package: 'ConfigurationOfNBOpenGL'; load.
ConfigurationOfNBOpenGL project lastVersion load.
test := (GLTTRenderingDemo new) openInWorld; yourself. ---
the problem appears in the last line with an error "No suitable implementation found for initlising OpenGL context" . Should I assume it can find OpenGL libraries or is it a problem with the graphic card drivers. CC has been given me problem, but Blender works okish considering it completely reliant on OpenGL
Here is all debug info
---- 31 January 2012 11:27:51 am
VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-IgorStasenko.8 uuid: f47ef546-de3d-4415-850e-6437d67bfb5c Aug 9 2011, StackToRegisterMappingCogit VMMaker-oscog-IgorStasenko.108 uuid: 384f4108-f1f4-4954-8357-0b3005cb81e2 Aug 9 2011, https://git.gitorious.org/cogvm/blessed.git Commit: f6deabba4432fa22b767dc17718a0fb84c9f3e88 Date: Tue Aug 9 14:47:19 2011 +0200 By: Igor Stasenko <siguctua@gmail.com> Image: Pharo1.4a [Latest update: #14284]
NBGLContextDriver class(Object)>>error: Receiver: NBGLContextDriver Arguments and temporary variables: aString: 'No suitable implementation found for initializing OpenGL context for ...etc... Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses: {NBMacGLContextDriver} name: #NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil
[self error: 'No suitable implementation found for initializing OpenGL context for your platform'] in NBGLContextDriver class>>forCurrentPlatform Receiver: NBGLContextDriver Arguments and temporary variables:
Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses: {NBMacGLContextDriver} name: #NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil
OrderedCollection(Collection)>>detect:ifNone: Receiver: an OrderedCollection(NBMacGLContextDriver) Arguments and temporary variables: aBlock: [:cls | cls supportsCurrentPlatform] exceptionBlock: [self error: 'No suitable implementation found for initializing...etc... Receiver's instance variables: array: {NBMacGLContextDriver} firstIndex: 1 lastIndex: 1
NBGLContextDriver class>>forCurrentPlatform Receiver: NBGLContextDriver Arguments and temporary variables: driver: nil Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses: {NBMacGLContextDriver} name: #NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil
NBGLContextDriver class>>createContext: Receiver: NBGLContextDriver Arguments and temporary variables: initialExtent: (50@40) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#changeViewportSize:->(NBGLContextDriver>>#chang...etc... format: 132 instanceVariables: #('gl') organization: ('viewport' changeViewportSize:) ('initialize-release' createCont...etc... subclasses: {NBMacGLContextDriver} name: #NBGLContextDriver classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil
NBGLDisplay class>>extent: Receiver: NBGLDisplay Arguments and temporary variables: anInitialExtent: (50@40) driver: nil extensions: nil disp: nil ext: (50@40) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#canUseForm:->(NBGLDisplay>>#canUseForm: "a Comp...etc... format: 136 instanceVariables: #('session' 'extent' 'driver') organization: ('reading pixels' canUseForm: updateForm:bounds:) ('viewport' cha...etc... subclasses: {NBMSAAOffscreenDisplay. NBOffscreenDisplay} name: #NBGLDisplay classPool: nil sharedPools: an OrderedCollection(NBGLConstants) environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Display' traitComposition: {} localSelectors: nil
GLTTRenderingDemo(GLViewportMorph)>>initializeForNewSession Receiver: a GLTTRenderingDemo(979369984) Arguments and temporary variables:
Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (987496448) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil
GLTTRenderingDemo>>initializeForNewSession Receiver: a GLTTRenderingDemo(979369984) Arguments and temporary variables:
Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (987496448) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil
GLTTRenderingDemo(GLViewportMorph)>>initialize Receiver: a GLTTRenderingDemo(979369984) Arguments and temporary variables:
Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (987496448) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil
GLTTRenderingDemo>>initialize Receiver: a GLTTRenderingDemo(979369984) Arguments and temporary variables: fontPath: nil Receiver's instance variables: bounds: (0@0) corner: (50@40) owner: nil submorphs: #() fullBounds: (0@0) corner: (50@40) color: Color blue extension: a MorphExtension (987496448) session: nil form: nil useOwnForm: nil display: nil d: nil glyphCache: nil font: nil curveRenderer: nil
GLTTRenderingDemo class(Behavior)>>new Receiver: GLTTRenderingDemo Arguments and temporary variables:
Receiver's instance variables: superclass: GLViewportMorph methodDict: a MethodDictionary(#initialize->(GLTTRenderingDemo>>#initialize "a ...etc... format: 158 instanceVariables: #('d' 'glyphCache' 'font' 'curveRenderer') organization: ('as yet unclassified' initialize initializeForNewSession openInW...etc... subclasses: nil name: #GLTTRenderingDemo classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'NBOpenGL-Morphic-Demo' traitComposition: {} localSelectors: nil
UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables:
Receiver's instance variables: nil
Compiler>>evaluate:in:to:notifying:ifFail:logged: Receiver: a Compiler Arguments and temporary variables: textOrStream: a ReadWriteStream aContext: nil receiver: nil aRequestor: a TextMorphForEditView(50593792) failBlock: [self morph flash. ^ nil] logFlag: true methodNode: DoIt ^ test := GLTTRenderingDemo new openInWorld; yourself method: (UndefinedObject>>#DoIt "a CompiledMethod(970457088)") value: nil toLog: nil itsSelection: nil itsSelectionString: nil Receiver's instance variables: sourceStream: a ReadWriteStream requestor: a TextMorphForEditView(50593792) class: UndefinedObject category: nil context: nil parser: a Parser
[rcvr class evaluatorClass new evaluate: self selectionForDoitAsStream in: ctxt to: rcvr notifying: self morph ifFail: [self morph flash. ^ nil] logged: true] in SmalltalkEditor>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(50593792) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState
BlockClosure>>on:do: Receiver: [rcvr class evaluatorClass new evaluate: self selectionForDoitAsStream in: ctxt to: ...etc... Arguments and temporary variables: exception: OutOfScopeNotification handlerAction: [:ex | ex resume: true] handlerActive: true Receiver's instance variables: outerContext: SmalltalkEditor>>evaluateSelectionAndDo: startpc: 110 numArgs: 0
SmalltalkEditor>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [:result | result] result: nil rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(50593792) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState
SmalltalkEditor>>evaluateSelection Receiver: a SmalltalkEditor Arguments and temporary variables:
Receiver's instance variables: morph: a TextMorphForEditView(50593792) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState
[textMorph editor evaluateSelection] in PluggableTextMorph>>doIt Receiver: a PluggableTextMorph(268173312) Arguments and temporary variables:
Receiver's instance variables: bounds: (509.0@25.0) corner: (951.0@388.0) owner: a SystemWindow(672137216) submorphs: an Array(a TransformMorph(428343296)) fullBounds: (509@25) corner: (951@388) color: (Color r: 0.804 g: 0.864 b: 0.857) extension: a MorphExtension (45350912) [locked] borderWidth: 1 borderColor: #inset model: a Workspace open: false accessor: nil scrollBar: a ScrollBar(274989056) scroller: a TransformMorph(428343296) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #codePaneMenu:shifted: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(668205056) textMorph: a TextMorphForEditView(50593792) getTextSelector: #contents setTextSelector: #acceptContents: getSelectionSelector: nil hasUnacceptedEdits: true askBeforeDiscardingEdits: true selectionInterval: (1 to: 333) hasEditingConflicts: false acceptAction: nil getColorSelector: nil unstyledAcceptText: nil styler: a SHTextStylerST80 autoAccept: nil enabled: true getEnabledSelector: nil highlights: an OrderedCollection() acceptOnFocusChange: nil selectionColor: nil alwaysAccept: nil changedAction: nil
[result := editBlock value] in PluggableTextMorph>>handleEdit: Receiver: a PluggableTextMorph(268173312) Arguments and temporary variables: editBlock: [textMorph editor evaluateSelection] result: #(nil) Receiver's instance variables: bounds: (509.0@25.0) corner: (951.0@388.0) owner: a SystemWindow(672137216) submorphs: an Array(a TransformMorph(428343296)) fullBounds: (509@25) corner: (951@388) color: (Color r: 0.804 g: 0.864 b: 0.857) extension: a MorphExtension (45350912) [locked] borderWidth: 1 borderColor: #inset model: a Workspace open: false accessor: nil scrollBar: a ScrollBar(274989056) scroller: a TransformMorph(428343296) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #codePaneMenu:shifted: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(668205056) textMorph: a TextMorphForEditView(50593792) getTextSelector: #contents setTextSelector: #acceptContents: getSelectionSelector: nil hasUnacceptedEdits: true askBeforeDiscardingEdits: true selectionInterval: (1 to: 333) hasEditingConflicts: false acceptAction: nil getColorSelector: nil unstyledAcceptText: nil styler: a SHTextStylerST80 autoAccept: nil enabled: true getEnabledSelector: nil highlights: an OrderedCollection() acceptOnFocusChange: nil selectionColor: nil alwaysAccept: nil changedAction: nil
TextMorphForEditView(TextMorph)>>handleEdit: Receiver: a TextMorphForEditView(50593792) Arguments and temporary variables: editBlock: [result := editBlock value] Receiver's instance variables: bounds: (0@0) corner: (434@274) owner: a TransformMorph(428343296) submorphs: #() fullBounds: (0@0) corner: (434@274) color: Color black extension: a MorphExtension (70778880) [other: (blinkStart -> 2690020) (myDepe...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'Gofer it squeaksource: ''NativeBoost''; packa...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editView: a PluggableTextMorph(268173312) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil
PluggableTextMorph>>handleEdit: Receiver: a PluggableTextMorph(268173312) Arguments and temporary variables: editBlock: [textMorph editor evaluateSelection] result: #(nil) Receiver's instance variables: bounds: (509.0@25.0) corner: (951.0@388.0) owner: a SystemWindow(672137216) submorphs: an Array(a TransformMorph(428343296)) fullBounds: (509@25) corner: (951@388) color: (Color r: 0.804 g: 0.864 b: 0.857) extension: a MorphExtension (45350912) [locked] borderWidth: 1 borderColor: #inset model: a Workspace open: false accessor: nil scrollBar: a ScrollBar(274989056) scroller: a TransformMorph(428343296) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #codePaneMenu:shifted: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(668205056) textMorph: a TextMorphForEditView(50593792) getTextSelector: #contents setTextSelector: #acceptContents: getSelectionSelector: nil hasUnacceptedEdits: true askBeforeDiscardingEdits: true selectionInterval: (1 to: 333) hasEditingConflicts: false acceptAction: nil getColorSelector: nil unstyledAcceptText: nil styler: a SHTextStylerST80 autoAccept: nil enabled: true getEnabledSelector: nil highlights: an OrderedCollection() acceptOnFocusChange: nil selectionColor: nil alwaysAccept: nil changedAction: nil
PluggableTextMorph>>doIt Receiver: a PluggableTextMorph(268173312) Arguments and temporary variables:
Receiver's instance variables: bounds: (509.0@25.0) corner: (951.0@388.0) owner: a SystemWindow(672137216) submorphs: an Array(a TransformMorph(428343296)) fullBounds: (509@25) corner: (951@388) color: (Color r: 0.804 g: 0.864 b: 0.857) extension: a MorphExtension (45350912) [locked] borderWidth: 1 borderColor: #inset model: a Workspace open: false accessor: nil scrollBar: a ScrollBar(274989056) scroller: a TransformMorph(428343296) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #codePaneMenu:shifted: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(668205056) textMorph: a TextMorphForEditView(50593792) getTextSelector: #contents setTextSelector: #acceptContents: getSelectionSelector: nil hasUnacceptedEdits: true askBeforeDiscardingEdits: true selectionInterval: (1 to: 333) hasEditingConflicts: false acceptAction: nil getColorSelector: nil unstyledAcceptText: nil styler: a SHTextStylerST80 autoAccept: nil enabled: true getEnabledSelector: nil highlights: an OrderedCollection() acceptOnFocusChange: nil selectionColor: nil alwaysAccept: nil changedAction: nil
Workspace(StringHolder)>>perform:orSendTo: Receiver: a Workspace Arguments and temporary variables: selector: #doIt otherTarget: a PluggableTextMorph(268173312) Receiver's instance variables: dependents: a DependentsArray(a SystemWindow(672137216) a PluggableTextMorph(26...etc... contents: '' bindings: a Dictionary('test'->nil ) acceptDroppedMorphs: false acceptAction: nil mustDeclareVariables: false fileName: nil lineEnding: #lf encoding: 'utf-8' stylingActive: true
[| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]. self changed] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: evt: [(560@321) mouseUp 828114 nil] selArgCount: 2 Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil
BlockClosure>>ensure: Receiver: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector...etc... Arguments and temporary variables: aBlock: [oldcursor show] complete: nil returnValue: nil Receiver's instance variables: outerContext: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: startpc: 160 numArgs: 0
CursorWithMask(Cursor)>>showWhile: Receiver: ((CursorWithMask extent: (16@16) depth: 1 fromArray: #( 2r0 2r100000000000000000000...etc... Arguments and temporary variables: aBlock: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [targe...etc... oldcursor: ((CursorWithMask extent: (16@16) depth: 1 fromArray: #( 2r0 2...etc... Receiver's instance variables: bits: a Bitmap of length 16 width: 16 height: 16 depth: 1 offset: (-1@ -1) maskForm: Form(16x16x1)
ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: evt: [(560@321) mouseUp 828114 nil] w: a PasteUpMorph(425197568) [world] Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil
ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: evt: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil
ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil
MouseButtonEvent>>sentTo: Receiver: [(560@321) mouseUp 828114 nil] Arguments and temporary variables: anObject: a ToggleMenuItemMorph(287309824)'Do it (d)' Receiver's instance variables: timeStamp: 828114 source: a HandMorph(843055104) windowIndex: nil type: #mouseUp buttons: 0 position: (560@321) handler: nil wasHandled: true whichButton: 4
ToggleMenuItemMorph(Morph)>>handleEvent: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil
MorphicEventDispatcher>>dispatchDefault:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] aMorph: a ToggleMenuItemMorph(287309824)'Do it (d)' localEvt: nil index: 1 child: nil morphs: #() inside: true Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] aMorph: a ToggleMenuItemMorph(287309824)'Do it (d)' Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with:
ToggleMenuItemMorph(Morph)>>processEvent:using: Receiver: a ToggleMenuItemMorph(287309824)'Do it (d)' Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] defaultDispatcher: a MorphicEventDispatcher Receiver's instance variables: bounds: (541.0@310.0) corner: (678.0@328.0) owner: a MenuMorph(954466304) submorphs: #() fullBounds: (541.0@310.0) corner: (678.0@328.0) color: Color black extension: a MorphExtension (289931264) font: a StrikeFont(Bitmap DejaVu Sans 9 14) emphasis: 0 contents: 'Do it (d)' hasFocus: false isEnabled: true subMenu: nil isSelected: false target: a Workspace selector: #perform:orSendTo: arguments: an Array(#doIt a PluggableTextMorph(268173312)) icon: Form(16x16x32) getStateSelector: nil enablementSelector: nil keyText: nil
MorphicEventDispatcher>>dispatchDefault:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] aMorph: a MenuMorph(954466304) localEvt: [(560@321) mouseUp 828114 nil] index: 1 child: a ToggleMenuItemMorph(287309824)'Do it (d)' morphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuItemMo...etc... inside: false Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] aMorph: a MenuMorph(954466304) Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with:
MenuMorph(Morph)>>processEvent:using: Receiver: a MenuMorph(954466304) Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] defaultDispatcher: a MorphicEventDispatcher Receiver's instance variables: bounds: (537.0@306.0) corner: (682.0@644.0) owner: nil submorphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuIte...etc... fullBounds: (537.0@306.0) corner: (683.0@645.0) color: (Color r: 0.775 g: 0.775 b: 0.775) extension: a MorphExtension (958136320) [other: (basicColor -> Color lightGray...etc... borderWidth: 1 borderColor: Color gray defaultTarget: a Workspace selectedItem: a ToggleMenuItemMorph(287309824)'Do it (d)' stayUp: false popUpOwner: nil activeSubMenu: nil activatorDockingBar: nil embeddable: nil menuItems: an OrderedCollection(a ToggleMenuItemMorph(287309824)'Do it (d)' a T...etc...
MenuMorph(Morph)>>processEvent: Receiver: a MenuMorph(954466304) Arguments and temporary variables: anEvent: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (537.0@306.0) corner: (682.0@644.0) owner: nil submorphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuIte...etc... fullBounds: (537.0@306.0) corner: (683.0@645.0) color: (Color r: 0.775 g: 0.775 b: 0.775) extension: a MorphExtension (958136320) [other: (basicColor -> Color lightGray...etc... borderWidth: 1 borderColor: Color gray defaultTarget: a Workspace selectedItem: a ToggleMenuItemMorph(287309824)'Do it (d)' stayUp: false popUpOwner: nil activeSubMenu: nil activatorDockingBar: nil embeddable: nil menuItems: an OrderedCollection(a ToggleMenuItemMorph(287309824)'Do it (d)' a T...etc...
MenuMorph>>handleFocusEvent: Receiver: a MenuMorph(954466304) Arguments and temporary variables: evt: [(560@321) mouseUp 828114 nil] Receiver's instance variables: bounds: (537.0@306.0) corner: (682.0@644.0) owner: nil submorphs: an Array(a ToggleMenuItemMorph(287309824)'Do it (d)' a ToggleMenuIte...etc... fullBounds: (537.0@306.0) corner: (683.0@645.0) color: (Color r: 0.775 g: 0.775 b: 0.775) extension: a MorphExtension (958136320) [other: (basicColor -> Color lightGray...etc... borderWidth: 1 borderColor: Color gray defaultTarget: a Workspace selectedItem: a ToggleMenuItemMorph(287309824)'Do it (d)' stayUp: false popUpOwner: nil activeSubMenu: nil activatorDockingBar: nil embeddable: nil menuItems: an OrderedCollection(a ToggleMenuItemMorph(287309824)'Do it (d)' a T...etc...
--- The full stack --- NBGLContextDriver class(Object)>>error: [self error: 'No suitable implementation found for initializing OpenGL context for your platform'] in NBGLContextDriver class>>forCurrentPlatform OrderedCollection(Collection)>>detect:ifNone: NBGLContextDriver class>>forCurrentPlatform NBGLContextDriver class>>createContext: NBGLDisplay class>>extent: GLTTRenderingDemo(GLViewportMorph)>>initializeForNewSession GLTTRenderingDemo>>initializeForNewSession GLTTRenderingDemo(GLViewportMorph)>>initialize GLTTRenderingDemo>>initialize GLTTRenderingDemo class(Behavior)>>new UndefinedObject>>DoIt Compiler>>evaluate:in:to:notifying:ifFail:logged: [rcvr class evaluatorClass new evaluate: self selectionForDoitAsStream in: ctxt to: rcvr notifying: self morph ifFail: [self morph flash. ^ nil] logged: true] in SmalltalkEditor>>evaluateSelectionAndDo: BlockClosure>>on:do: SmalltalkEditor>>evaluateSelectionAndDo: SmalltalkEditor>>evaluateSelection [textMorph editor evaluateSelection] in PluggableTextMorph>>doIt [result := editBlock value] in PluggableTextMorph>>handleEdit: TextMorphForEditView(TextMorph)>>handleEdit: PluggableTextMorph>>handleEdit: PluggableTextMorph>>doIt Workspace(StringHolder)>>perform:orSendTo: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]. self changed] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: WorldState>>doOneSubCycleFor: PasteUpMorph>>doOneSubCycle MenuMorph>>invokeModalAt:in:allowKeyboard: MenuMorph>>invokeModal: MenuMorph>>invokeModal PluggableTextMorph>>yellowButtonActivity: TextMorphForEditView>>mouseDown: TextMorphForEditView(Morph)>>handleMouseDown: MouseButtonEvent>>sentTo: TextMorphForEditView(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: TextMorphForEditView(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchMouseDown:with:** MorphicEventDispatcher>>dispatchEvent:with: TransformMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: PluggableTextMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: SystemWindow(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchMouseDown:with: MorphicEventDispatcher>>dispatchEvent:with: PasteUpMorph(Morph)>>processEvent:using: PasteUpMorph>>processEvent:using: PasteUpMorph(Morph)>>processEvent: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in MorphicUIManager>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess
-- best, Eliot
Le 30/01/2012 16:29, Igor Stasenko a écrit :
someone please lend me the day-stretcher , to have 48 hours/day :)
Ask to French politicians, they can work up to 72 hours a day, commulating different political positions. They are supermen! Sorry can't resist. Hilaire -- Dr. Geo -- http://www.drgeo.eu
Igor Stasenko wrote:
someone please lend me the day-stretcher , to have 48 hours/day :)
Here is a start... http://www.stevepavlina.com/blog/2005/10/polyphasic-sleep/ You might not have time to read the whole diary, so after the intro you can skip to the end... http://www.stevepavlina.com/blog/2006/04/polyphasic-sleep-the-return-to-mono...
participants (13)
-
Alexandre Bergel -
Ben Coman -
Bernardo Ezequiel Contreras -
chadwick -
dimitris chloupis -
Eliot Miranda -
Hilaire Fernandes -
Igor Stasenko -
Janko Mivšek -
Javier Pimás -
Lawson English -
Schwab,Wilhelm K -
Stéphane Ducasse