開源理念

深度操作系統的發展是站在上游社區的基礎之上才能走到今天,除了我們自己開發了數百萬行代碼的原創開源項目外,我們深知只有秉承 "取之于開源,回饋予開源” 的開源理念,才能將我們自己的代碼和功能改進回饋予上游開源社區,才能更好的推動全世界的開源運動向前不斷發展。

上游貢獻

下面是我們對上游社區的代碼貢獻補丁以及簡要說明:

Wine:

深度科技Wine團隊每天都會開發很多功能來完善Wine的API實現完整性,以更好的支持Windows應用在Linux上運行,包括QQ、迅雷、RTX等應用的支持都有deepin團隊貢獻的補丁,具體的貢獻補丁如下:

wininet/tests: Check null pointer in InternetGetSecurityInfoByURLW
https://source.winehq.org/git/wine.git/commit/3f06a09604f8c2364dfbf6e6987d991f140544bc

winex11: Avoid deadlock when setting cursor.
https://source.winehq.org/git/wine.git/commit/48fb9d6a03a16e389b3d214d68356c52ad3310b9

wininet: Don't release connection too early.
https://source.winehq.org/git/wine.git/commit/6d6dd78e5dad164d1b313599f9afa5f65481d29d

user32: Make functions use display dc thread-safe
https://source.winehq.org/git/wine.git/commit/daa832f4bf265e459e17d487453f3cc112f6e567

kernel32/tests: Add tests for MultiByteToWideChar in DBCS codepage.
https://source.winehq.org/git/wine.git/commit/e776421232996729a0e350c31d56f696bd47e429

[PATCH] add test on host value of InternetConnectW
[PATCH] wininet/test: Add tests on host value for InternetConnectW (try 3)
Subject: hidclass.sys: Properly quit hid_device_thread when both completion event and halt event are signaled (try 4)
libwine: Make mbstowcs_dbcs return real converted chars when srclen is 1, len is 0 and *scr is partial char.
hidclass.sys: Initialize ext->irp_queue immediately after HID_CreateDevice
winedbg: Add disassembly_flavor option to use the intel disassembly style like gdb's disassembly-flavor option. (try 2)
winedbg: Add disassembly_flavor option to use the intel disassembly style like gdb's disassembly-flavor option. (try 3)
user32:-send-WM_PRINTCLIENT-when-PW_CLIENTONLY-is-set
[PATCH] wbemprox: implement Win32_DiskDrive.PNPDeviceID
kernel32: Add test MultiByteToWideChar for code page is 936. (try 3)
winex11.drv: Fix handle_wm_protools take focus error cause tooltip window and popup menu not visible
hidclass.sys: Properly quit hid_device_thread when both completion event and halt event are signaled (try 2)
hidclass.sys: Properly quit hid_device_thread when both completion event and halt event are signaled.
hidclass.sys: Properly print 80 bytes in first line when tracing ParseDescriptor.
[PATCH] svchost: Add LOAD_WITH_ALTERED_SEARCH_PATH flags to LoadLibraryEx in AddServiceElem
winedbg: Add a debug button on crash dialog, get rid of shift + right click magic (try3)
ole32: make CoWaitForMultipleHandles continue dispatch message to OLE apartment window even received WM_QUIT message
quartz: waveparser support wav file generated by ffmpeg (try3)
0001-winedbg-Add-a-debug-button-on-crash-dialog-get-rid-of-
quartz: waveparser support wav file generated by ffmpeg (try 4)
ieframe:add app: protocol support to make mshtml trigger BeforeNavigate2 event when handle app: hyperlink
kernel32: Add test MultiByteToWideChar for code page is 936. (try 3)
quartz: waveparser support wav file generated by ffmpeg
comctl32: SysDateTimePick32 control add Alt+down hot key likewindows (try 3)
[PATCH] iphlpapi: call WSASetLastError in NotifyAddrChange/NotifyRouteChange
quartz: waveparser support wav file generated by ffmpeg (try 2)
qcap: Add O_CLOEXEC flag to prevent child process from inheriting handles.

 

Metacity&Mutter:

深度窗口管理器是基于metacity和mutter開發的高級窗口窗口管理器,其中deepin-metacity是基于metacity之上開發的,deepin-wm是基于mutter之上開發的。在開發的過程中,發現了很多上游社區的bug和功能需要改進的地方,具體的補丁請見:

 

Emacs:

深度開發者之一王勇除了是Emacs中w3m-org 模塊 (http://repo.or.cz/w/org-mode.git?a=blob_plain;f=lisp/org-w3m.el;hb=HEAD) 的作者外,還編寫了眾多的Emacs插件和維護了上百個Emacs插件的補丁。

Emacs插件:https://www.emacswiki.org/emacs/AndyStewart

Emacs補丁貢獻:https://www.google.com.hk/search?q=AndyStewart+site%3Aemacswiki.org&oq=AndyStewart+site%3Aemacswiki.org&aqs=chrome..69i57.8162j0j4&sourceid=chrome&ie=UTF-8

 

PyGTK:

在用Python + Gtk+開發圖形應用的時候,深度科技團隊發現pangocairo庫在自繪字體的時候,pangocairo創建的layout對象不會銷毀,最后會導致自繪界面的有嚴重內存泄露的情況,深度科技團隊已經發送修復補丁至pygtk 上游修復此問題,下面是具體的補丁情況:
Index: pygtk-2.24.0/pangocairo.override
===================================================================
--- pygtk-2.24.0.orig/pangocairo.override??????? 2012-04-14 01:40:59.568703232 +0800
+++ pygtk-2.24.0/pangocairo.override??????? 2012-04-14 01:41:05.792703324 +0800
@@ -119,10 +119,15 @@
_wrap_pango_cairo_create_layout(PyGObject *self)
{
PangoLayout *ret;
+??? PyObject *py_ret;ret = pango_cairo_create_layout(PycairoContext_GET(self));
/* pygobject_new handles NULL checking */
-??? return pygobject_new((GObject *)ret);
+??? py_ret = pygobject_new((GObject *) ret);
+??? if (ret) {
+??????? g_object_unref(ret);
+??? }
+??? return py_ret;
}
static PyObject *

該補丁已經被ArchLinux社區收錄:https://lists.archlinux.org/pipermail/arch-commits/2015-September/291622.html

 

Miraclecast

https://github.com/albfan/miraclecast/tree/wip/source-impl

這個補丁主要是基于 Miraclecast 項目, 實現了實時本地影音發送端功能,讓開放設備間能有雙向的投屏互連功能。

 

PulseAudio

modules: support XDG_DATA_DIRS when find desktop files

https://patchwork.freedesktop.org/patch/189110/

這個補丁主要是基于 PulseAudio 項目, 實現了在查找桌面文件時支持XDG_DATA_DIRS。

 

Qt

https://codereview.qt-project.org/#/c/217601/

這個補丁主要是修復了QtQuick使用軟件繪制后端, 且在高分屏下開啟非整數倍縮放時,繪制的圓角矩形模糊。

 

歡迎加入

希望更多的熱愛開源的開發者加入“回饋開源”的行動,推動中國開發者在國際開源社區的影響力,讓中國的開源運動能夠源遠流長的發展下去。