On 04/19/2013 04:57 AM, João Jerónimo wrote:
Em 19-04-2013 01:52, [email protected] escreveu:
Might be useful to post the code.

Ok. I'll post it then.
I'm linking only the wayland libraries. One also needs to use the
-std=gnu++11 flag.

[...]

int main()
{
     try {
         printf("Hello world!!!!! Example Wayland client...\n");

         // Connect

[...]

         wl_display_dispatch(display);
         wl_display_roundtrip(display);
         cout << "End of globals..." << endl << endl;

         // Create surface

[...]

         for (int i=0; i<100*200; ++i) {
             buffer[i] = 0x40404040;
         }

         wl_surface_attach(surface, buffer_wl, 0, 0);

         wl_surface_damage(surface, 0, 0, 100, 200);
         wl_surface_commit(surface);

         for(;;);

When the program enters the infinite loop, the requests are still sitting in the connection buffer in the client side. Before blocking, clients should call wl_display_flush(). You'll find more details in the Wayland client API documentation:

http://wayland.freedesktop.org/docs/html/chap-Library.html#sect-Library-Client

Cheers,
Ander


         // Terminate connection
         wl_display_disconnect(display);

         return 0;
     }
     catch(string &errstr) {
         cout << "FATAL: " << errstr << endl;
     }
}


João Jerónimo






On 04/19, João Jerónimo wrote:
Hello.

I was trying to understand what is the minimal code needed to get a
square painter on the screen. However, although I can make the
client talk to the Weston compositor, enumerate the global objects,
etc, I can't still see my surface drawn in the compositor scene.

The steps that my program makes so far are as follows:
  - call wl_display_connect(NULL)
  - call wl_display_get_registry(display)
  - Install listeners for the registry that wl_registry_bind() many
of the advertised objects. However, I'm not listening to the events
of the objects advertised by the registry. Is it needed?
  - call wl_display_dispatch()  and wl_display_roundtrip()
  - call wl_compositor_create_surface()
  - mkostemp() a file and ftruncate() it to some 10MB or so
  - mmap() the entire file created
  - call wl_shm_create_pool()
  - call wl_shm_pool_create_buffer()
  - call wl_display_dispatch()
  - Fill the buffer with some content. I filled it entirely with
pattern 0x40404040.
  - call wl_surface_attach(surface, buffer, 0, 0)
  - Then the program just sits in an infinite loop...

Am I missing anything?

Sorry for my poor English (assuming that you think it's poor)....
João Jerónimo

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel




_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to