Re: [wxhaskell-users] virtual list control

2012-05-14 Thread Fabian Binz
Hi Jeremy, 

 

I don't know if you continued working on this, but I forked wxHaskell on
GitHub and tried to implement it myself:
https://github.com/FabianBinz/wxHaskell

 

 

For testing purposes, I only implemented the OnGetItemText and SetItemCount
method and it seems to work. 

 

 

To implement the virtual list control, I defined a new class
wxVirtualListCtrl in wxc:

https://github.com/FabianBinz/wxHaskell/blob/master/wxc/src/include/virtuall
istctrl_impl.h

 

 

Since it needs to invoke a callback function, I created the typedef
OnGetItemTextCallback. To make wxdirect accept this new type, I extended the
parser (patomtype) in ParseC.hs. This solution is very ad-hoc and I think
because wxc is supposed to be a language agnostic C wrapper, we should maybe
add another macro to wcx_types.hs (something like TCallback), which is then
recognized by wxdirect.

 

 

So, while this all works pretty well, there is unfortunately a memory leak
in Graphics.UI.WXCore.VirtualListCtrl, because of my use of newCString. At
the moment I don't know how to fix it and would be glad if someone could
give me some advice.

 

 

 

Regards,

Fabian

 

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
wxhaskell-users mailing list
wxhaskell-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wxhaskell-users


Re: [wxhaskell-users] virtual list control

2012-05-14 Thread Jeremy O'Donoghue
Hi Fabian,

On 12 May 2012 16:12, Fabian Binz fabianb...@yahoo.de wrote:

   Hi Jeremy, 

 I don't know if you continued working on this, but I forked wxHaskell on
 GitHub and tried to implement it myself:
 https://github.com/FabianBinz/wxHaskell

I have been doing some work, but I don't have a lot of time right now, so
it is going more slowly than I would like.

 For testing purposes, I only implemented the OnGetItemText and
 SetItemCount method and it seems to work.

 To implement the virtual list control, I defined a new class
 wxVirtualListCtrl in wxc:


 https://github.com/FabianBinz/wxHaskell/blob/master/wxc/src/include/virtuallistctrl_impl.h
 

 Since it needs to invoke a callback function, I created the typedef
 OnGetItemTextCallback. To make wxdirect accept this new type, I extended
 the parser (patomtype) in ParseC.hs. This solution is very ad-hoc and I
 think because wxc is supposed to be a language agnostic C wrapper, we
 should maybe add another macro to wcx_types.hs (something like TCallback),
 which is then recognized by wxdirect.

 So, while this all works pretty well, there is unfortunately a memory leak
 in Graphics.UI.WXCore.VirtualListCtrl, because of my use of newCString. At
 the moment I don't know how to fix it and would be glad if someone could
 give me some advice.


You need to use a finalizer - this is what I am looking into. There is an
overview at
http://www.haskell.org/haskellwiki/GHC/Using_the_FFI#Calling_Haskell_from_C,
but it could be clearer! Basic idea is that you free the CString when the
GC has no more references to the closure in which it is used.

I am using the event handler code as a model, since this already allows
callbacks from C to Haskell, and handles reference counting. Just haven't
finished yet.

I will take a look at your fork and see if you are further along than me,
and take code accordingly.

Best regards
Jeremy
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
wxhaskell-users mailing list
wxhaskell-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wxhaskell-users