From: Michael M. <mi...@xi...> - 2002-05-07 13:06:50
|
Hi Guys, I was just having an idle read of gst-player, with a view to making the 'double size' / 'half size' thing work [ for me ]. I was somewhat amazed at several things in there; Firstly - a structure is shared with some evil cut and paste action cf: gst-player/libs/gst/player/gstvideowidget.h (GstXHook) struct _GstXHook { gulong id; void (*free_info) (GstXHook *hook); Display *display; Window window; GC gc; GdkRectangle rect; }; gst-plugins/sys/videosink/gstximage.c (GstXImageInfo) struct _GstXImageInfo { GstImageInfo info; Display *display; Window window; GC gc; gint x, y, w, h; }; These seem to be copies - with the GstXImageInfo being written out. [ quite why GstXImageInfo is called an 'ImageInfo' since it appears to contain nothing at all related to images is a mystery to me ]. So - poking inside gstvideowidget I see people hacking around inside the 'hook' a pointer to which is passed [ it seems ] to the videosink - which in it's various incarnations seems to use the 'width' and 'height' properties rather more sensibly than whatever it does with the hook information [ which I stopped chasing at that stage ]. So - the question is - why is this unmaintainable cut and paste happening ? is it not possible to achieve the same effect with a simple freeze / property set set set set / thaw ? Or better just share the structure in some shared header - it's a real shame the GType system can't cope with structured types [ as the CORBA one can / has to ]. Where does the hook data go to in the end ? and what is the relation of the various 'width' / 'height' properties to the hook data's width / height ? - how is the requested as opposed to the current width / height of eg. sdlvideosink differentiated ? or is that something you have to store in your app ? Also - it seems there is a lot of X hackery going on in there; would not a GtkSocket be more appropriate ? Regards, Michael. -- mm...@gn... <><, Pseudo Engineer, itinerant idiot |