For whatever it's worth, I was working on a similar plugin situation 16 years ago. I tried using plug+socket. Couldn't make it work. GTK+ developers at the time told me to stop using it.
We now get a Gtk::Widget* from a plugin and add that to our own Gtk::Window. On Tue, Sep 26, 2017 at 1:54 PM, René Hansen <r...@hansen-audio.de> wrote: > Hey Eric, > > It looks like you are trying to paint a surface 100 times every 16ms. >> Maybe not such a good thing to do. >> > > Yes, I agree but that's on purpose in order to make the problem *very* > obvious ;) In one of my projects I draw round about 25 bitmaps (which > partly overlap) onto the drawingarea. While some mouse interaction takes > place I need to redraw several times. This results in flickering of all > single bitmaps almost everytime I redraw. It looks as if the drawingarea > gets cleared before I finish drawing my bitmaps. > > > The plug and socket are separate programs. You would start your socket > > and add one or more plugs to it. Each plug is running as it's own > > process. > > Yes, that's correct. But in the documentation of Gtk::Socket::add_id it > says: > "Adds an XEMBED client, such as a Gtk::Plug, to the Gtk::Socket. > The client may be in the same process or in a different process." > > So I am of the assumption that both is possible. Either Socket and Plug > live in the same process or different processes. Is that correct? > > Some details about my real world project (I hope it is not too confusing). > I have a host application (executable) which builds its GUI with Gtk. Then > I have a plug-in (shared object resp. .so file) which also builds its GUI > with Gtk. But the plug-ins GUI must be shown by embedding it into the host > application (like x11 is capable of). So I pass the socket_id of the host > to the plug-in so it can connect by creating a plug. The plug-in lives > inside the host application's process. But it is also possible that the > host creates an extra process to let the plug-in run, but still, the GUI > must be shown inside the host application. Both scenarios are possible. > > > There is some socket and plug test code at the following. > ... > > I just added a frame clock to the plug. If you are looking to animate a > drawing in a plug that might be of some help. > > Thanks! I will have closer look and try to figure out how this works. > > > If you are programming in C++, the gtkmm tutorial is very good. > > Yes, I know this one, built it and let it run successfully. No flickering. > Afterwards I extended this example by having both socket and plug in the > same process. I added some idle call to the plug and let it draw a bunch of > bitmaps. It started flickering. Then I removed all the gtkmm stuff in order > to have plain Gtk code. And this is the example I have put on my github ;) > > Thanks for help. I will study your "plug2.c" example and see what I will > come up with. > > > René > _______________________________________________ > gtk-list mailing list > gtk-list@gnome.org > https://mail.gnome.org/mailman/listinfo/gtk-list >
_______________________________________________ gtk-list mailing list gtk-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-list