pthreadsで作成されたバックグラウンドスレッドからバインドされたGtkListStoreを更新した後、 GtkTreeViewを再描画させる方法を見つけようとしています。
通常、ウィジェットは、何かが既存の行を覆い隠すまで更新されません (マウス カーソルでも)。
この問題に関する私の検索のほとんどは、「あなたのツリーモデルは正しい信号を生成していません/生成していません」....
産業用組み込みアプリケーション用に、古い Red Hat 9 と gtk+ 2.0.0 を実行しています。ほとんどのデータは ipc/socket/pipes から取得され、GTK アプリによって表示されます。残念ながら、CRITICAL アラームもそうです。これは、表示されるべきときに表示されない傾向があります。(いつの日か) 現在のカーネルに移行する予定ですが、既存のソフトウェアで動作するものを取得する必要があります。
「row - changed 」シグナルを発行しようとしました。
server.c
bool Server::Start()
{
// ....
// pthread_t _id;
//
pthread_create( & _id, NULL, &StaticServerThread, this );
// ....
}
viewer.c
bool Viewer::ReadFinished( SocketArgs * args )
{
gdk_threads_enter();
// Populate the buffer and message
//
// GtkListStore *_outputStore;
// gchar *buffer;
// gchar *message;
GtkTreeIter iter;
gtk_list_store_insert_with_values( _outputStore, &iter, 0,
0, buffer, 1, message, -1 );
// ....
gdk_threads_leave();
}