mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-12 17:00:33 +01:00
A GObject interface, like a class, has two different C types associated with it; the type of the "class" struct (eg, GObjectClass, GFileIface), and the type of instances of that class/interface (eg, GObject, GFile). NetworkManager was doing this wrong though, and using the same C type to point to both the interface's class struct and to instances of the interface. This ends up not actually breaking anything, since for interface types, the instance type is a non-dereferenceable dummy type anyway. But it's wrong, since if, eg, NMDeviceFactory is a struct type containing members "start", "device_added", etc, then you should not be using an NMDeviceFactory* to point to an object that does not contain those members. Fix this by splitting NMDeviceFactory into NMDeviceFactoryInterface and NMDeviceFactory; by splitting NMConnectionProvider into NMConnectionProviderInterface and NMConnectionProvider; and by splitting NMSettingsPlugin into NMSettingsPluginInterface and NMSettingsPlugin; and then use the right types in the right places. As a bonus, this also lets us now use G_DEFINE_INTERFACE. |
||
|---|---|---|
| .. | ||
| exports.ver | ||
| Makefile.am | ||
| nm-bluez-common.h | ||
| nm-bluez-device.c | ||
| nm-bluez-device.h | ||
| nm-bluez-manager.c | ||
| nm-bluez-manager.h | ||
| nm-bluez4-adapter.c | ||
| nm-bluez4-adapter.h | ||
| nm-bluez4-manager.c | ||
| nm-bluez4-manager.h | ||
| nm-bluez5-dun.c | ||
| nm-bluez5-dun.h | ||
| nm-bluez5-manager.c | ||
| nm-bluez5-manager.h | ||
| nm-bt-error.c | ||
| nm-bt-error.h | ||
| nm-device-bt.c | ||
| nm-device-bt.h | ||