[nemiver] Change IDebugger::thread_selected_signal signature



commit d5a09a9588daffd69a75da52fe471dc8dade6c64
Author: Dodji Seketeli <dodji redhat com>
Date:   Tue Aug 11 16:25:43 2009 +0200

    Change IDebugger::thread_selected_signal signature
    
    	* src/dbgengine/nmv-i-debugger.h:
    	(IDebugger::thread_selected_signal): Change signature.
    	The frame is now a pointer.
    	* src/dbgengine/nmv-gdb-engine.h: Adjust.
    	* src/dbgengine/nmv-gdb-engine.cc: Likewise.
    	* src/persp/dbgperspective/nmv-thread-list.cc: Likewise.

 src/dbgengine/nmv-gdb-engine.cc             |   21 +++++++++++++++------
 src/dbgengine/nmv-gdb-engine.h              |    2 +-
 src/dbgengine/nmv-i-debugger.h              |    2 +-
 src/persp/dbgperspective/nmv-thread-list.cc |    9 ++++-----
 tests/test-breakpoint.cc                    |   10 +++++++---
 5 files changed, 28 insertions(+), 16 deletions(-)
---
diff --git a/src/dbgengine/nmv-gdb-engine.cc b/src/dbgengine/nmv-gdb-engine.cc
index 18350f9..4caa5de 100644
--- a/src/dbgengine/nmv-gdb-engine.cc
+++ b/src/dbgengine/nmv-gdb-engine.cc
@@ -176,8 +176,10 @@ public:
                          const vector<UString>&,
                          const UString& > files_listed_signal;
 
-    mutable sigc::signal<void, int, const Frame&, const UString&>
-                                                        thread_selected_signal;
+    mutable sigc::signal<void,
+                         int,
+                         const Frame * const,
+                         const UString&> thread_selected_signal;
 
     mutable sigc::signal<void, const vector<IDebugger::Frame>&, const UString&>
                                                     frames_listed_signal;
@@ -1229,9 +1231,13 @@ struct OnThreadListHandler : OutputHandler {
 
 struct OnThreadSelectedHandler : OutputHandler {
     GDBEngine *m_engine;
+    long thread_id;
+    bool has_frame;
 
     OnThreadSelectedHandler (GDBEngine *a_engine) :
-        m_engine (a_engine)
+        m_engine (a_engine),
+        thread_id (0),
+        has_frame (false)
     {}
 
     bool can_handle (CommandAndOutput &a_in)
@@ -1249,9 +1255,12 @@ struct OnThreadSelectedHandler : OutputHandler {
         LOG_FUNCTION_SCOPE_NORMAL_DD;
 
         THROW_IF_FAIL (m_engine);
+
         m_engine->thread_selected_signal ().emit
-            (a_in.output ().result_record ().thread_id (),
-             a_in.output ().result_record ().frame_in_thread (),
+            (thread_id,
+             has_frame
+                ? &a_in.output ().result_record ().frame_in_thread ()
+                : 0,
              a_in.command ().cookie ());
     }
 };//end OnThreadSelectedHandler
@@ -2718,7 +2727,7 @@ GDBEngine::files_listed_signal () const
     return m_priv->files_listed_signal;
 }
 
-sigc::signal<void, int, const IDebugger::Frame&, const UString&>&
+sigc::signal<void, int, const IDebugger::Frame* const, const UString&>&
 GDBEngine::thread_selected_signal () const
 {
     return m_priv->thread_selected_signal;
diff --git a/src/dbgengine/nmv-gdb-engine.h b/src/dbgengine/nmv-gdb-engine.h
index 9b813f6..2e0d905 100644
--- a/src/dbgengine/nmv-gdb-engine.h
+++ b/src/dbgengine/nmv-gdb-engine.h
@@ -102,7 +102,7 @@ public:
 
     sigc::signal<void,
                  int,
-                 const Frame&,
+                 const Frame* const,
                  const UString&>& thread_selected_signal () const  ;
 
     sigc::signal<void,
diff --git a/src/dbgengine/nmv-i-debugger.h b/src/dbgengine/nmv-i-debugger.h
index 3b453f5..27b7738 100644
--- a/src/dbgengine/nmv-i-debugger.h
+++ b/src/dbgengine/nmv-i-debugger.h
@@ -821,7 +821,7 @@ public:
 
     virtual sigc::signal<void,
                          int/*thread id*/,
-                         const IDebugger::Frame&/*frame in thread*/,
+                         const IDebugger::Frame *const/*frame in thread*/,
                          const UString& /*cookie*/> &
                                              thread_selected_signal () const=0;
 
diff --git a/src/persp/dbgperspective/nmv-thread-list.cc b/src/persp/dbgperspective/nmv-thread-list.cc
index a4681ee..d05d7d9 100644
--- a/src/persp/dbgperspective/nmv-thread-list.cc
+++ b/src/persp/dbgperspective/nmv-thread-list.cc
@@ -125,14 +125,13 @@ struct ThreadList::Priv {
         NEMIVER_CATCH
     }
 
-    void on_debugger_thread_selected_signal (int a_tid,
-                                             const IDebugger::Frame &a_frame,
-                                             const UString &a_cookie)
+    void on_debugger_thread_selected_signal
+                            (int a_tid,
+                             const IDebugger::Frame * const,
+                             const UString &/*a_cookie*/)
     {
         LOG_FUNCTION_SCOPE_NORMAL_DD;
 
-        if (a_frame.level () || a_cookie.empty ()) {}
-
         NEMIVER_TRY
 
         select_thread_id (a_tid, false);
diff --git a/tests/test-breakpoint.cc b/tests/test-breakpoint.cc
index 62862fd..777e290 100644
--- a/tests/test-breakpoint.cc
+++ b/tests/test-breakpoint.cc
@@ -167,14 +167,18 @@ on_threads_listed_signal (const std::list<int> &a_thread_ids,
 
 void
 on_thread_selected_signal (int a_thread_id,
-                           const IDebugger::Frame &a_frame,
+                           const IDebugger::Frame * const a_frame,
                            const UString &a_cookie)
 {
     if (a_cookie.empty ()) {}
 
     MESSAGE ("thread selected: '" << a_thread_id)  ;
-    MESSAGE ("frame in thread : '" << a_frame.level ())  ;
-    MESSAGE ("frame.function: '" << a_frame.function_name ()) ;
+    if (a_frame) {
+        MESSAGE ("frame in thread : '" << a_frame->level ())  ;
+        MESSAGE ("frame.function: '" << a_frame->function_name ()) ;
+    } else {
+        MESSAGE ("no frame provided");
+    }
 }
 
 void



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