Hi, by retrieving the console like this:

        public static <T extends iBase> T CS_QUERY_REGISTRY(Class<T>
clazz,int major,int minor,int micro) {
                try {
                        iBase cons = 
cspace.getTheObjectRegistry().Get(clazz.getSimpleName());
                        int version = ((major << 24) | (minor << 16) | micro);
                        long id = 
iSCF.getSCF().GetInterfaceID(clazz.getSimpleName());
                        Object obj = cons.QueryInterface(id, version);
                        Field swigCPtr = 
obj.getClass().getDeclaredField("swigCPtr");
                        swigCPtr.setAccessible(true);
                        Constructor<?> constr =
clazz.getDeclaredConstructor(long.class,boolean.class);
                        constr.setAccessible(true);
                        @SuppressWarnings("unchecked")
                        T result = (T) 
constr.newInstance(swigCPtr.get(obj),false);
                        result.DecRef();
                        return result;
                }
                catch (Exception e) {
                        return null;
                }
        }

        private void setupConsole() {
                this.conout = ACrystalspaceApplication.CS_QUERY_REGISTRY(
                                iConsoleOutput.class, 3, 0, 0);
                CDebug.assertNotNull(this.conout);
                this.conin = ACrystalspaceApplication.CS_QUERY_REGISTRY(
                                iConsoleInput.class, 2, 0, 0);
                CDebug.assertNotNull(this.conin);
                this.conin.Bind(this.conout);
                this.conin.SetPrompt("console>");
                this.conin.SetExecuteCallback(new csJExecCallback(
                                new CConsoleExecCallBack(this.conin, 
this.conout)));
        }

It works... it's ugly but works, can there be a problem in the native
macro CS_QUERY_REGISTRY which prevent it to work correctly ?

Now that the console works... I have another problem /o\... I can
activate it, it shows up correctly, type in thing in it... but
whenever I hit 'enter', the program stop with the following:

(0) : fatal error C9999: *** exception during compilation ***
Cg compiler terminated due to fatal error

I'm again lost... what does that mean ? The program runs with the
terrainf loaded.

Than you,
Quentin

2008/9/22 Eric Sunshine <[EMAIL PROTECTED]>:
> It seems like it would be a good idea to open a bug report (ticket) at
> http://trac.crystalspace3d.org/trac/CS. Please include all of the
> information you have reported thus far in your emails.
>
> -- ES
>
> Quentin Anciaux wrote:
>> To prevent the crash, I've modified javapre.i line 197:
>>
>>     iBase * ibase = (iBase *)$1.Ref;
>>     void * ptr =
>> ibase->QueryInterface(iSCF::SCF->GetInterfaceID($1.Type), $1.Version);
>>
>> by
>>
>>     iBase * ibase = dynamic_cast<iBase *>((iBase *)$1.Ref);
>>     if (ibase != NULL) {
>>        void * ptr =
>> ibase->QueryInterface(iSCF::SCF->GetInterfaceID($1.Type), $1.Version);
>>        ...
>>     }
>>
>> This way it doesn't crash anymore... but still the console object is null...
>>
>> Quentin
>>
>> 2008/9/22 Quentin Anciaux <[EMAIL PROTECTED]>:
>>> Hi,
>>>
>>> I've narrowed the problem:
>>>
>>> Here is the generated JNI code for Query registry, the problem is that
>>> "iBase * ibase = (iBase *)(&result)->Ref;" is null...
>>> So it seems the query registry cannot find the plugin... but if I
>>> execute with verbose, it shows these lines:
>>>
>>> [EMAIL 
>>> PROTECTED]:~/crystalspace/workspace/crystalspace-tutorial-map/run/bin$
>>> cat log.log | grep cscon
>>> SCF_NOTIFY: registering plugin
>>> /home/qan/crystalspace/workspace/crystalspace-tutorial-map/run/crystalspace/lib/crystalspace-1.2/csconout.so
>>> in context `{none}'
>>> SCF_NOTIFY: registering class crystalspace.console.output.standard in
>>> context `{none}' (from
>>> /home/qan/crystalspace/workspace/crystalspace-tutorial-map/run/crystalspace/lib/crystalspace-1.2/csconout.so)
>>> SCF_NOTIFY: registering plugin
>>> /home/qan/crystalspace/workspace/crystalspace-tutorial-map/run/crystalspace/lib/crystalspace-1.2/csconin.so
>>> in context `{none}'
>>> SCF_NOTIFY: registering class crystalspace.console.input.standard in
>>> context `{none}' (from
>>> /home/qan/crystalspace/workspace/crystalspace-tutorial-map/run/crystalspace/lib/crystalspace-1.2/csconin.so)
>>> SCF_NOTIFY: loading plugin
>>> /home/qan/crystalspace/workspace/crystalspace-tutorial-map/run/crystalspace/lib/crystalspace-1.2/csconin.so
>>> to satisfy request for csConsoleInput
>>> SCF_NOTIFY: loading plugin
>>> /home/qan/crystalspace/workspace/crystalspace-tutorial-map/run/crystalspace/lib/crystalspace-1.2/csconout.so
>>> to satisfy request for csConsoleOutput
>>>
>>> So why doesn't it work ? I've seen thread with the Warning: Suspicious
>>> but it is about multiple crystalspace install... But I've only one
>>> installation, and the CRYSTAL variable is set.
>>>
>>> Thanks for any help,
>>> Quentin
>>>
>>> generated JNI code:
>>> SWIGEXPORT jobject JNICALL
>>> Java_org_crystalspace3d_cspaceJNI_CS_1QUERY_1REGISTRY(JNIEnv *jenv,
>>> jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
>>>  jobject jresult = 0 ;
>>>  iObjectRegistry *arg1 = (iObjectRegistry *) 0 ;
>>>  char *arg2 = (char *) 0 ;
>>>  int arg3 ;
>>>  SwigValueWrapper<csWrapPtr > result;
>>>  char className2[1024] ;
>>>
>>>  (void)jenv;
>>>  (void)jcls;
>>>  (void)jarg1_;
>>>  arg1 = *(iObjectRegistry **)&jarg1;
>>>  {
>>>    const char * s = jenv->GetStringUTFChars(jarg2, 0);
>>>    const char * dot = strrchr(s, '.');
>>>    strcpy(className2, "org/crystalspace3d/");
>>>    strcat(className2, dot?dot+1:s);
>>>    arg2 = className2 + sizeof("org/crystalspace3d/") - 1;
>>>    jenv->ReleaseStringUTFChars(jarg2, s);
>>>    jclass cls = jenv->FindClass(className2);
>>>    jmethodID mid = jenv->GetStaticMethodID(cls, "scfGetVersion", "()I");
>>>    arg3 = jenv->CallStaticIntMethod(cls, mid);
>>>  }
>>>  result = CS_QUERY_REGISTRY(arg1,(char const *)arg2,arg3);
>>>  {
>>>    iBase * ibase = (iBase *)(&result)->Ref;
>>>    if (ibase != NULL) {
>>>        void * ptr = 
>>> ibase->QueryInterface(iSCF::SCF->GetInterfaceID((&result)->Type),
>>> (&result)->Version);
>>>        ibase->DecRef(); // Undo IncRef from QueryInterface
>>>        if (ptr == 0)
>>>        jresult = 0;
>>>        else
>>>        {
>>>        jlong cptr = 0;
>>>        *(void **)&cptr = ptr;
>>>        char cls_name[1024];
>>>        strcat(strcpy(cls_name, "org/crystalspace3d/"), (&result)->Type);
>>>        jclass cls = jenv->FindClass(cls_name);
>>>        jmethodID mid = jenv->GetMethodID(cls, "<init>", "(JZ)V");
>>>        jresult = jenv->NewObject(cls, mid, cptr, false);
>>>        }
>>>   }
>>>  }
>>>  return jresult;
>>> }
>>>
>>>
>>> 2008/9/20 Quentin Anciaux <[EMAIL PROTECTED]>:
>>>> Hi,
>>>>
>>>> I try to add a console using the
>>>> http://www.crystalspace3d.org/main/Cimstep1 tutorial with crystalspace
>>>> 1.2.1 on an ubuntu 64. I'm using the csjava binding (so the code is in
>>>> java).
>>>>
>>>> I register the plugin with:
>>>>
>>>>                plugins.add(new csPluginRequest(
>>>>                                "crystalspace.console.output.standard", 
>>>> "iConsoleOutput"));
>>>>                plugins.add(new csPluginRequest(
>>>>                                "crystalspace.console.input.standard", 
>>>> "iConsoleInput"));
>>>>
>>>> But when in the program I do:
>>>>
>>>> this.conout = (iConsoleOutput)cspace.CS_QUERY_REGISTRY(cspace
>>>>                                .getTheObjectRegistry(), 
>>>> iConsoleOutput.class);
>>>>
>>>> I got the following in the console:
>>>>
>>>> WARNING! Suspicious: object with tag 'iConsoleOutput' does not
>>>> implement interface 'iConsoleOutput'!
>>>>
>>>> and the program crash with:
>>>>
>>>> #
>>>> # An unexpected error has been detected by Java Runtime Environment:
>>>> #
>>>> #  SIGSEGV (0xb) at pc=0x00007f980b75b96b, pid=29215, tid=1082800464
>>>> #
>>>> # Java VM: OpenJDK 64-Bit Server VM (1.6.0_0-b11 mixed mode linux-amd64)
>>>> # Problematic frame:
>>>> # C  [lib26687.so+0x1bd96b]
>>>> Java_org_crystalspace3d_cspaceJNI_CS_1QUERY_1REGISTRY+0x225
>>>> #
>>>> # An error report file with more information is saved as:
>>>> # 
>>>> /home/qan/crystalspace/workspace/crystalspace-tutorial-map/run/bin/hs_err_pid29215.log
>>>> #
>>>> # If you would like to submit a bug report, please visit:
>>>> #   https://bugs.launchpad.net/ubuntu/+source/openjdk-6/
>>>> # The crash happened outside the Java Virtual Machine in native code.
>>>> # See problematic frame for where to report the bug.
>>>> #
>>>> Aborted
>>>>
>>>> Same thing if trying to get ConsoleInput first.
>>>>
>>>> I did have to modify cspace.i to add ivaria/conin.h to get
>>>> ConsoleInput and also added an iConsoleExecCallback implementation in
>>>> java-post.i. But it crash well before adding the callback, it crash at
>>>> the query registry.
>>>>
>>>> Do you have an idea why it crash and or what means : Suspicious:
>>>> object with tag 'iConsoleOutput' does not implement interface
>>>> 'iConsoleOutput'!
>>>>
>>>> Thank you,
>>>> Quentin Anciaux
>>>>
>>>> --
>>>> All those moments will be lost in time, like tears in rain.
>>>>
>>>
>>>
>>> --
>>> All those moments will be lost in time, like tears in rain.
>>>
>>
>>
>>
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Crystal-main mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/crystal-main
> Unsubscribe: mailto:[EMAIL PROTECTED]
>



-- 
All those moments will be lost in time, like tears in rain.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Crystal-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/crystal-main
Unsubscribe: mailto:[EMAIL PROTECTED]

Reply via email to