Global Metrics
path: .metrics.cognitive.average
old: 8.0
new: 0.07692307692307693
path: .metrics.cognitive.sum
old: 8.0
new: 1.0
path: .metrics.cyclomatic.sum
old: 10.0
new: 23.0
path: .metrics.cyclomatic.average
old: 5.0
new: 1.0454545454545454
path: .metrics.mi.mi_sei
old: 37.3714740450308
new: 19.11091451509901
path: .metrics.mi.mi_original
old: 49.31600045735124
new: 45.67929461794715
path: .metrics.mi.mi_visual_studio
old: 28.839766349328208
new: 26.713037788273187
path: .metrics.nexits.sum
old: 1.0
new: 13.0
path: .metrics.halstead.estimated_program_length
old: 314.3686449376554
new: 674.7347109918256
path: .metrics.halstead.difficulty
old: 12.95744680851064
new: 13.24468085106383
path: .metrics.halstead.n2
old: 47.0
new: 94.0
path: .metrics.halstead.effort
old: 10835.457115727397
new: 36394.83117707439
path: .metrics.halstead.time
old: 601.969839762633
new: 2021.9350653930217
path: .metrics.halstead.vocabulary
old: 61.0
new: 109.0
path: .metrics.halstead.bugs
old: 0.1632213267472203
new: 0.366076528792872
path: .metrics.halstead.level
old: 0.07717569786535304
new: 0.07550200803212852
path: .metrics.halstead.purity_ratio
old: 2.2295648577138683
new: 1.66190815515228
path: .metrics.halstead.N2
old: 87.0
new: 166.0
path: .metrics.halstead.volume
old: 836.2339645963671
new: 2747.882835859432
path: .metrics.halstead.length
old: 141.0
new: 406.0
path: .metrics.halstead.n1
old: 14.0
new: 15.0
path: .metrics.halstead.N1
old: 54.0
new: 240.0
path: .metrics.loc.cloc
old: 70.0
new: 17.0
path: .metrics.loc.lloc
old: 1.0
new: 16.0
path: .metrics.loc.ploc
old: 91.0
new: 94.0
path: .metrics.loc.sloc
old: 183.0
new: 130.0
path: .metrics.loc.blank
old: 22.0
new: 19.0
path: .metrics.nom.functions
old: 1.0
new: 13.0
path: .metrics.nom.total
old: 1.0
new: 13.0
Spaces Data
Minimal test - lines (20, 106)
path: .spaces[0].metrics.mi.mi_sei
old: 99.26699426690874
new: 27.4579914836913
path: .spaces[0].metrics.mi.mi_original
old: 121.20789317454616
new: 55.70138923653984
path: .spaces[0].metrics.mi.mi_visual_studio
old: 70.88180887400361
new: 32.57391183423382
path: .spaces[0].metrics.cyclomatic.sum
old: 1.0
new: 15.0
path: .spaces[0].metrics.nom.functions
old: 1.0
new: 12.0
path: .spaces[0].metrics.nom.total
old: 1.0
new: 12.0
path: .spaces[0].metrics.halstead.N1
old: 11.0
new: 191.0
path: .spaces[0].metrics.halstead.n1
old: 7.0
new: 13.0
path: .spaces[0].metrics.halstead.effort
old: 181.6201599784581
new: 20635.093747927513
path: .spaces[0].metrics.halstead.bugs
old: 0.010690256224877058
new: 0.250774309228039
path: .spaces[0].metrics.halstead.difficulty
old: 3.5
new: 10.364864864864863
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.8434322969602153
new: 1.64273548670672
path: .spaces[0].metrics.halstead.volume
old: 51.89147427955946
new: 1990.8695402172568
path: .spaces[0].metrics.halstead.estimated_program_length
old: 27.651484454403228
new: 507.6052653923765
path: .spaces[0].metrics.halstead.length
old: 15.0
new: 309.0
path: .spaces[0].metrics.halstead.N2
old: 4.0
new: 118.0
path: .spaces[0].metrics.halstead.level
old: 0.2857142857142857
new: 0.09647979139504564
path: .spaces[0].metrics.halstead.n2
old: 4.0
new: 74.0
path: .spaces[0].metrics.halstead.vocabulary
old: 11.0
new: 87.0
path: .spaces[0].metrics.halstead.time
old: 10.090008887692116
new: 1146.394097107084
path: .spaces[0].metrics.nexits.sum
old: 1.0
new: 12.0
path: .spaces[0].metrics.loc.sloc
old: 6.0
new: 87.0
path: .spaces[0].metrics.loc.cloc
old: 0.0
new: 7.0
path: .spaces[0].metrics.loc.lloc
old: 1.0
new: 12.0
path: .spaces[0].metrics.loc.blank
old: 0.0
new: 12.0
path: .spaces[0].metrics.loc.ploc
old: 6.0
new: 68.0
Code
namespace mozilla {
namespace widget {
// Our general connection to Wayland display server,
// holds our display connection and runs event loop.
// We have a global nsWaylandDisplay object for each thread.
class nsWaylandDisplay {
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(nsWaylandDisplay)
// Create nsWaylandDisplay object on top of native Wayland wl_display
// connection. When aLighWrapper is set we don't get wayland registry
// objects and only event loop is provided.
explicit nsWaylandDisplay(wl_display* aDisplay, bool aLighWrapper = false);
bool DispatchEventQueue();
void SyncBegin();
void QueueSyncBegin();
void SyncEnd();
void WaitForSyncEnd();
bool Matches(wl_display* aDisplay);
wl_display* GetDisplay() { return mDisplay; };
wl_event_queue* GetEventQueue() { return mEventQueue; };
wl_compositor* GetCompositor(void) { return mCompositor; };
wl_subcompositor* GetSubcompositor(void) { return mSubcompositor; };
wl_data_device_manager* GetDataDeviceManager(void) {
return mDataDeviceManager;
};
wl_seat* GetSeat(void) { return mSeat; };
wl_shm* GetShm(void) { return mShm; };
gtk_primary_selection_device_manager* GetPrimarySelectionDeviceManagerGtk(
void) {
return mPrimarySelectionDeviceManagerGtk;
};
zwp_primary_selection_device_manager_v1*
GetPrimarySelectionDeviceManagerZwpV1(void) {
return mPrimarySelectionDeviceManagerZwpV1;
};
zwp_idle_inhibit_manager_v1* GetIdleInhibitManager(void) {
return mIdleInhibitManager;
}
bool IsMainThreadDisplay() { return mEventQueue == nullptr; }
void SetShm(wl_shm* aShm);
void SetCompositor(wl_compositor* aCompositor);
void SetSubcompositor(wl_subcompositor* aSubcompositor);
void SetDataDeviceManager(wl_data_device_manager* aDataDeviceManager);
void SetSeat(wl_seat* aSeat);
void SetPrimarySelectionDeviceManager(
gtk_primary_selection_device_manager* aPrimarySelectionDeviceManager);
void SetPrimarySelectionDeviceManager(
zwp_primary_selection_device_manager_v1* aPrimarySelectionDeviceManager);
void SetIdleInhibitManager(zwp_idle_inhibit_manager_v1* aIdleInhibitManager);
bool IsExplicitSyncEnabled() { return mExplicitSync; }
private:
~nsWaylandDisplay();
PRThread* mThreadId;
wl_display* mDisplay;
wl_event_queue* mEventQueue;
wl_data_device_manager* mDataDeviceManager;
wl_compositor* mCompositor;
wl_subcompositor* mSubcompositor;
wl_seat* mSeat;
wl_shm* mShm;
wl_callback* mSyncCallback;
gtk_primary_selection_device_manager* mPrimarySelectionDeviceManagerGtk;
zwp_primary_selection_device_manager_v1* mPrimarySelectionDeviceManagerZwpV1;
zwp_idle_inhibit_manager_v1* mIdleInhibitManager;
wl_registry* mRegistry;
bool mExplicitSync;
};
void WaylandDispatchDisplays();
void WaylandDisplayRelease();
RefPtr WaylandDisplayGet(GdkDisplay* aGdkDisplay = nullptr);
wl_display* WaylandDisplayGetWLDisplay(GdkDisplay* aGdkDisplay = nullptr);
} // namespace widget
} // namespace mozilla