[glibmm/glibmm-2-50] PollFD: autodeduce type of fd field



commit 30abb2180219bc328cb522b6aaf97a9cf79fe1a1
Author: Marcin Kolny <marcin kolny gmail com>
Date:   Mon Dec 12 09:25:26 2016 +0100

    PollFD: autodeduce type of fd field
    
    * glib/glibmm/main.[h|cc]: file descriptor to poll can be either of gint,
      or gint64 type, depending on the platform. glibmm should follow this
      rule as well.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=772074

 glib/glibmm/main.cc |   10 +++++-----
 glib/glibmm/main.h  |   16 +++++++++-------
 2 files changed, 14 insertions(+), 12 deletions(-)
---
diff --git a/glib/glibmm/main.cc b/glib/glibmm/main.cc
index d726eba..93ba40e 100644
--- a/glib/glibmm/main.cc
+++ b/glib/glibmm/main.cc
@@ -357,14 +357,14 @@ PollFD::PollFD()
   gobject_.revents = 0;
 }
 
-PollFD::PollFD(int fd)
+PollFD::PollFD(PollFD::fd_t fd)
 {
   gobject_.fd = fd;
   gobject_.events = 0;
   gobject_.revents = 0;
 }
 
-PollFD::PollFD(int fd, IOCondition events)
+PollFD::PollFD(PollFD::fd_t fd, IOCondition events)
 {
   gobject_.fd = fd;
   gobject_.events = events;
@@ -490,7 +490,7 @@ inline SignalIO::SignalIO(GMainContext* context) : context_(context)
 
 sigc::connection
 SignalIO::connect(
-  const sigc::slot<bool, IOCondition>& slot, int fd, IOCondition condition, int priority)
+  const sigc::slot<bool, IOCondition>& slot, PollFD::fd_t fd, IOCondition condition, int priority)
 {
   const auto source = IOSource::create(fd, condition);
 
@@ -1295,7 +1295,7 @@ IdleSource::dispatch(sigc::slot_base* slot)
 
 // static
 Glib::RefPtr<IOSource>
-IOSource::create(int fd, IOCondition condition)
+IOSource::create(PollFD::fd_t fd, IOCondition condition)
 {
   return Glib::RefPtr<IOSource>(new IOSource(fd, condition));
 }
@@ -1312,7 +1312,7 @@ IOSource::connect(const sigc::slot<bool, IOCondition>& slot)
   return connect_generic(slot);
 }
 
-IOSource::IOSource(int fd, IOCondition condition) : poll_fd_(fd, condition)
+IOSource::IOSource(PollFD::fd_t fd, IOCondition condition) : poll_fd_(fd, condition)
 {
   add_poll(poll_fd_);
 }
diff --git a/glib/glibmm/main.h b/glib/glibmm/main.h
index f60cc8f..c6dc839 100644
--- a/glib/glibmm/main.h
+++ b/glib/glibmm/main.h
@@ -49,12 +49,14 @@ class Mutex;
 class PollFD
 {
 public:
+  using fd_t = decltype(GPollFD::fd);
+
   PollFD();
-  explicit PollFD(int fd);
-  PollFD(int fd, IOCondition events);
+  explicit PollFD(fd_t fd);
+  PollFD(fd_t fd, IOCondition events);
 
-  void set_fd(int fd) { gobject_.fd = fd; }
-  int get_fd() const { return gobject_.fd; }
+  void set_fd(fd_t fd) { gobject_.fd = fd; }
+  fd_t get_fd() const { return gobject_.fd; }
 
   void set_events(IOCondition events) { gobject_.events = events; }
   IOCondition get_events() const { return static_cast<IOCondition>(gobject_.events); }
@@ -305,7 +307,7 @@ public:
    * @param priority The priority of the new event source.
    * @return A connection handle, which can be used to disconnect the handler.
    */
-  sigc::connection connect(const sigc::slot<bool, IOCondition>& slot, int fd, IOCondition condition,
+  sigc::connection connect(const sigc::slot<bool, IOCondition>& slot, PollFD::fd_t fd, IOCondition condition,
     int priority = PRIORITY_DEFAULT);
 
   /** Connects an I/O handler that watches an I/O channel.
@@ -887,13 +889,13 @@ class IOSource : public Glib::Source
 public:
   using CppObjectType = Glib::IOSource;
 
-  static Glib::RefPtr<IOSource> create(int fd, IOCondition condition);
+  static Glib::RefPtr<IOSource> create(PollFD::fd_t fd, IOCondition condition);
   static Glib::RefPtr<IOSource> create(
     const Glib::RefPtr<IOChannel>& channel, IOCondition condition);
   sigc::connection connect(const sigc::slot<bool, IOCondition>& slot);
 
 protected:
-  IOSource(int fd, IOCondition condition);
+  IOSource(PollFD::fd_t fd, IOCondition condition);
   IOSource(const Glib::RefPtr<IOChannel>& channel, IOCondition condition);
 
   /** Wrap an existing GSource object and install the given callback function.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]