2016-04-09 4 views
1

私は現在webkit2gtkを使って簡単なブラウザを開発中です。 webkit2gtkでは、すべてのDOM関連の操作はWebProcessという別のプロセスで行われます。GVariantを使用して別のプロセスへのポインタを送信する

UIプロセスでGTKWidgetを作成しました。 WebProcessにGTKWidget構造体を渡す必要があります。 GVariantを使用できますか?

私はGVariant apisを読んでいます。 GVariantを使って文字列、整数、その​​他の基本型を送ることができます。しかし、GVariantを使ってオブジェクトを送ることはできますか?

答えて

3

あなたのタイトルとあなたの質問を区別する必要があります。

まずタイトル:別のプロセスへのポインタを送信

はい、あなたは(ポインタは通常、整数型に変換されている)が、ポインタは、常に1つのプロセスに固有であることを行うことができますメモリ - 受信側のプロセスはそれにアクセスできないので、ポインタは何もない(セグメンテーションフォールトを取得する)か、悪いことに、何かに(プログラムが間違ったデータで実行される)ことを示します。

ただし、GVariantを使用してオブジェクトを送信できますか?

一般的に、オブジェクトの内部を見ることができないので、ポインタが含まれている可能性があります。上記の私のコメントを参照してください。

しかし実際には多くのオブジェクトはポインタなしで動作するので、オブジェクトに属するタイプ情報とメモリは受信したメモリをオブジェクトの形状にキャストするだけで受信側で "再作成"するのに十分ですあなたはそれが分かっています。しかし、それは非常にオブジェクト固有です。

シリアライズについてお読みください。

関連する問題