Hi,

I am trying to port a Linux application to Windows that highly depends on GLib. I compiled GLib with MSVC 2015. The application uses g_poll() in a place. In g_poll() GNOME documentation, it states that

   If you need to use |g_poll()|
   
<https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html#g-poll> 
in
   code that has to run on Windows, the easiest solution is to
   construct all of your GPollFDs
   
<https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html#GPollFD>with
   |g_io_channel_win32_make _pollfd()|.


I will provide some small code segments to provide you insight:

.

.

//  In arv_gv_discover_socket_list_new() function

#ifdef_WIN32

GIOChannel*channel=g_io_channel_win32_new_socket(discover_socket->socket);

g_io_channel_win32_make_pollfd(channel,G_IO_IN,&socket_list->poll_fds[i]);

#else

        socket_list->poll_fds[i].fd=g_socket_get_fd(discover_socket->socket);

socket_list->poll_fds[i].events=G_IO_IN;

socket_list->poll_fds[i].revents=0;

#endif                                           .

.




// In_discover() function

.

.

arv_gv_discover_socket_list_send_discover_packet(socket_list);

do{

#ifdef_WIN32

// g_io_channel_win32_make _pollfd() documentation says call this

if(g_io_channel_win32_poll(socket_list->poll_fds,socket_list->n_sockets,ARV_GV_INTERFACE_DISCOVERY_TIMEOUT_MS)==0)

#else

if(g_poll(socket_list->poll_fds,socket_list->n_sockets,ARV_GV_INTERFACE_DISCOVERY_TIMEOUT_MS)==0)

#endif

{

arv_gv_discover_socket_list_free(socket_list);

returnNULL;

}

.

.

As you might guess, in arv_gv_discover_socket_list_new() function, GPollFDs are created and in _discover() function, a broadcast message is sent and then polled for reply. but no luck, still in _discover(), it time outs. By the way, in Linux, the same application works smootly. I also checked the discovery packet was actually emitted, and I saw a camera discovery ack packet coming to my network adapter via WireShark. Since I am newbie to GLib, I cannot be sure if this modification is incorrect or GLib implementation is incorrect. Can you help me to resolve the problem?
Thanks.
PS: The Linux project is Aravis 0.5.9. (http://ftp.gnome.org/pub/GNOME/sources/aravis/0.5/)

_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-devel-list

Reply via email to