Hi Pritpal,

>> However, before we do this, I'd like know if this is indeed the 
>> _real_ solution to the problem. Turning on MT mode decreases performance 
>> by ~30% (AFAIR) in mingw, so it's not a costless option. 
>> 
> 
> Does not matter how slow/fast it is, but it is needed.
> I cannot imagine a Windows development platform with MT support.
> HBXBP/demoQT definitely exploits it though I did not implement it 
> for HBIDE as this interface does not require it.

"Exploits it" and "cannot imagine" doesn't mean it _requires_ it.

What I'm interested in, is whether HBQT _requires it_?

IMO, it should not require it, but may give extra features 
if available, and for sure _be compatible with it_. If current 
implementation _requires it_, which means it cannot work or 
cannot reliably work without it, we should document this fact.

>> I can see some MT stuff in some hbqt files, but I can't tell for 
>> sure if MT is really needed, and I don't remember of such 
>> requirement from past discussions, and I wonder why does it seem 
>> work on other systems. (although hbide is also far from stable on my 
>> system, I had to shut it down from Task Manager, plus I also had 
>> GPFs today). I'm also not sure why MT mode should be obligatory for 
>> a GUI lib. This is a pretty important requirement to know about 
>> before deciding on using HBQT in ones app.
>> 
> 
> See above.

Sorry, but it doesn't answer my question.

>> I also can't see how GPFs can still occur by .prg level programming 
>> errors, and I'm in the dark regarding past memory leakage issues.
>> Are they solved now? I can't understand three the HBQT_RELEASE_WITH_* 
>> methods, is this a permanent user option now? When should it be used? 
>> Or is it an experiment to check which of them works? If the latter, 
>> do we know this already? If the former, why users have to bother with 
>> such low level details?
>> 
> 
> It is not prg level code which may produce GPF but certainly C level code
> which is called by PRG is producing it. Also note that HBIDE is still
> evolving
> and you have decided the outcome otherwise.

This misses my question. I know that GPF is caused by machine 
code and machine code is generated from C sources, and C is 
called by .prg level code, but it's irrelevant.

What I notice is that you repeatedly fix GPFs by tweaking .prg 
level code, which suggest that one can write such .prg code 
which makes lower level components fail. This is unacceptable 
IMO, and for sure makes it very difficult to work with such 
component.

Since you know the HBQT details inside out, it would be nice 
if you could give some hints on this topic.

>> Can HBQT experts advise on any of above matters?
>> 
> 
> This is the real problem. Here nobody is Qt expert, everybody 
> is trying to extract and making its roots firm for Harbour. As said before,
> I had not heard of anything about Qt before 17March2009.
> 
> By your posts for few days last I am gathering the impression
> that implementation of Qt is just waste of efforts. So I propose to 
> drop it all together.

Not exactly.

The problem is that all I see is problems, and no final 
resolutions to them and problems are just being piled 
higher and higher. What I see that we're in a hurry building 
on a foundation which is unstable. This is of course nice 
and dandy in open-source, but it's also part of open-source 
that such concerns that I expressed may be raised, and 
ideally it will result in answers, and more general knowledge 
about the topic and eventually it will result in code fixes, 
and finally in robust code.

In this e-mail I was trying to get some sort of status 
about problems, because it's quite difficult to see where 
we're now. Random GPFs are usual, and fixed in .prg code 
and memory issues are not closed AFAIK (but I may be wrong).

This causes that we don't know where to look where any 
problems occur. Look at the struggle with 4.6.0 and MinGW.
We're still unsure whether we need C++ mode, your .prg 
level fix or now MT mode to make the problems disappear :(

I've spent two frustrating days on this, so I decided to 
write this letter to try debunking these problems from the 
root. I hope it will happen.

Now it seems some theories (like C++ mode) were false and 
standard (new) MinGW can be used, now the only problem is that 
there's no easily installable MinGW version, but this will 
be solved by time, so it's not showstopper for us. MSVC binary 
build of QT _is_ frustrating, but we didn't lose much here, 
as 4.5.x didn't have such build at all, so we stand at the 
same place.

IMO these areas should be thoroughly inspected in HBQT to 
make it stable platform:

1) Memory handling. No leaks, reference counting, 
   whatever is needed, and automatic. It should be 
   transparent to .prg level programmer.
   IOW: _whatever_ user does from .prg, it should never 
   ever cause a memory leak or double freeing of memory.
2) Avoiding all GPFs that may result from calling 
   any HBQT wrappers with any wrong parameters, or any 
   sort of random order.
   This means HBQT should throw RTEs or handle invalid 
   (NULL) pointers, and there should be no reference 
   to freed pointersm, etc etc. 
   IOW: _whatever_ user does from .prg, it should never 
   ever cause a GPF.
3) Separation of components. I've written more about 
   this. This isn't a showstopper, but seems an important 
   task.

My only concern towards QT _which is out of our control_, 
is that it's very heavy and can't be linked statically.

But, from all other aspects it looks quite good and it 
will probably catch on even more, so IMO we should not 
drop but, but rather try to fix all the parts we can 
and make it a robust platform for Harbour.

Brgds,
Viktor

_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to