File indexing completed on 2024-04-28 05:32:12

0001 /*
0002     this file is part of the oxygen gtk engine
0003     SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0004     SPDX-FileCopyrightText: 2010 Ruslan Kabatsayev <b7.10110111@gmail.com>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #include "oxygenloghandler.h"
0010 
0011 #include <string>
0012 
0013 namespace Oxygen
0014 {
0015 
0016     //_________________________________________________________
0017     LogHandler::LogHandler( void )
0018     {
0019         _gtkLogId = g_log_set_handler( "Gtk", G_LOG_LEVEL_WARNING, gtkLogHandler, 0L );
0020         _glibLogId = g_log_set_handler( "GLib-GObject", G_LOG_LEVEL_CRITICAL, glibLogHandler, 0L );
0021     }
0022 
0023     //_________________________________________________________
0024     LogHandler::~LogHandler( void )
0025     {
0026 
0027         if( _gtkLogId > 0 )
0028         {
0029 
0030             g_log_remove_handler( "Gtk", _gtkLogId );
0031             g_log_set_handler( "Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, 0L );
0032 
0033         }
0034 
0035         if( _glibLogId > 0 )
0036         {
0037 
0038             g_log_remove_handler( "GLib-GObject", _glibLogId );
0039             g_log_set_handler( "GLib-GObject", G_LOG_LEVEL_CRITICAL, g_log_default_handler, 0L );
0040 
0041         }
0042 
0043     }
0044 
0045     //_________________________________________________________
0046     void LogHandler::gtkLogHandler( const gchar* domain, GLogLevelFlags flags, const gchar* message, gpointer data )
0047     {
0048 
0049         if( std::string( message ).find( "attempt to underallocate" ) != std::string::npos ) return;
0050         g_log_default_handler( domain, flags, message, data );
0051 
0052     }
0053 
0054     //_________________________________________________________
0055     void LogHandler::glibLogHandler( const gchar* domain, GLogLevelFlags flags, const gchar* message, gpointer data )
0056     {
0057 
0058         if( std::string( message ).find( "g_object_ref" ) != std::string::npos ) return;
0059         g_log_default_handler( domain, flags, message, data );
0060 
0061     }
0062 
0063 }