[요청] 사례금 지급 ^^; 모질라 브라우저 엔진을 xlib에 연결 시킨 경험 있으신분..
글쓴이: lobin2 / 작성시간: 목, 2007/07/05 - 11:26오전
이 문제로 3주 가까이 해외포럼도 뒤져봤지만... 결과가 안나오네요.. ㅠ.ㅠ
Xlib로 구현된 메인 프로그램에 모질라 브라우저 엔진을 연결시키는 작업입니다.
현재 모질라 홈페이지를 가보면 Embed Mozilla를 편하게 쓸 수 있도록 GtkMozEmbed나 Ruby를 통해서 편한 인터페이스를 제공하고 있습니다.
하지만 Xlib로는 제공하고 있질 않네요... Embed Mozilla를 Xlib로 연결시키면 가장 Best지만... 제 예상으로는 힘들 것 같네요.
혹시... 브라우저 엔진을 Xlib로 빌드해서 프로그램에 연결해 보신 분의 도움이 필요합니다.
내용: 모질라 브라우저 엔진을 Xlib로 빌드해서 메인 프로그램에 연결 시키는 작업 + 약간의 Embedding
사례금: 개인 프로젝트라서 많이는 못드리구요 10만원 + a 정도 예상합니다.
연락처: gateslee2@hotmail.com ( 016-411-8187 )
많은 시도를 하다가 최종적으로 이 방법을 택하게 됐는데... 너무 질책하지 말아 주셨으면 합니다. ^^;
브라우저 엔진을 Xlib로 연결해 보신 경험이 있으신 분의 연락 부탁드립니다.
Forums:
그냥 gtkmozembed쓰는걸
그냥 gtkmozembed쓰는걸 추천합니다.
필요한 것만 집어넣고 cram으로 구겨넣으면 8메가 안에도 들어갈 수 있을 것입니다.
----
Do not feed troll!
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
gtkmozembed를 쓸 수 없는 상황이라...
브라우저 엔진 외에 동영상 엔진과 mp3 엔진을 이미 xlib로 올려놓은 상태입니다.
화면의 일부분에 표시가 되어야 되고, GTK가 멀티 쓰레드에 문제가 좀 있어서 Xlib로 연결시켜야 하는 상황입니다.
GtkMozEmbed로 구현을 해 봤는데, 이 문제외에도 여러 문제가 발생해서 최종적으로 xlib로 연결하는 방법을 택하게 된 것입니다.
도움 부탁드립니다.
동영상과 mp3는
동영상과 mp3는 xlib쓰도록 하고 브라우져는 브라우져대로 돌아가게 하면 될텐데요?
Xlib으로 Window를 만든 다음 해당 window id로 gdkwindow를 만들고 그위에 gtkmozembed를 올리면 될 것 같습니다만..
http://developer.gnome.org/doc/API/2.0/gdk/gdk-X-Window-System-Interaction.html#gdk-window-foreign-new
http://developer.gnome.org/doc/API/2.0/gtk/GtkWidget.html#gtk-widget-set-parent-window
를 살펴보시기 바랍니다.
그리고 멀티쓰레드쪽은 화면을 그리는 부분 앞뒤에 적절히 gdk_threads_enter()와 gdk_threads_leave()를 호출해주시면 될껍니다.
----
Do not feed troll!
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
그렇게 하면 다른 문제가 발생해요...
GdkWindow는 GtkWidget의 한 멤버 변수이고, GtkWidget의 다른 멤버 변수들의 값을 구하지 못해서 아래와 같이 디폴트 윈도우를 생성하였습니다.
GtkWidget *gtkWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
이렇게 생성된 gtkWindow의 GdkWindow 멤버변수의 말씀해 주신 함수를 써서 연결을 시켰는데, 제대로 동작하지 않네요.
또한 gtk_window_new를 써서 생성한 윈도우가 GTK_WINDOW_POPUP을 써도... xlib에서 생성한 parentwindow 밑으로 들어가는게 아니라서
프로그램을 실행하면 2개의 창이 테스크바에 뜨게 되는 문제가 있네요.
GtkMozembed의 nsIBaseWindow::InitWindow 의 첫번째 인자가 GtkWidget형으로 window가 들어가서 브라우저와 연결이 되는데,
이를 Xlib의 Window*형으로 연결시키는 방법이 없을까요?
GtkWidget *browser =
----
Do not feed troll!
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
말씀해 주신대로 했는데도 안되네요...
일단 Firefox/mozilla/embedding/browser/gtk/tests의 TestGtkEmbed.cpp를 아래의 코드로 최소화 시켰습니다.
그리고.. 말씀해 주신 방식대로 "// Test " 아래 부분을 수정하고, 적당히 main에서 인자를 넘겨 보여주려고 시도를 했는데,
아무런 화면이 나오질 않네요....
main.cpp에서 CGtkMozEmbed.Run을 실행해서 Display*와 Window* 값을 넘기고 아래의 루틴을 탑니다...
ganadist님.. 죄송하지만.. 아래 소스를 Window*로 표시하도록 수정좀 해 주시면 안될까요...
너무나 어렵네요....
댓글 삭제가 없네요 ㅠ.ㅠ
..
댓글 달기